This is roughly what it does. I did not bother to figure out what the purpose of the SHA256 hahses not mentioned here is. The code also converts between byte arrays and strings using ASCII and UTF-16 encoding and Base64 encoded data a thousand times so I might have lost track of this and the pseudo code below is missing some encoding changes.
salt = "$2a$10$67C.GOM1jShOBOM.f.BIAe" // Version 2a and work factor 10.
password = BASE64-ENCODE(BCRYPT(password1 + password2, salt))
rounds = 45000
salt = CSRNG.GetBytes(32)
key + iv = PBKDF2-HMAC-SHA1(password, salt, rounds).GetBytes(32 + 16)
encrypted = BASE64-ENCODE(salt + AES-256-CBC(GZIP(message), key, iv))
The bcrypt implementation comes from [1].