Function at 0x40ee00
Capabilities:
Encode data using base64

Disassembly:
sub esp, 0x18
mov ecx, dword [esp + 0x2c]
mov eax, ecx
and eax, 0x200
neg eax
push ebp
sbb al, al
and al, 5
add al, 0x22
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x24]
mov ebp, dword [eax + 0x1c]
mov dword [esp + 8], ebp
test ebp, ebp
je 0x40fac5
push ebx
mov ebx, dword [esp + 0x24]
mov eax, ecx
push esi
and eax, 0x44
mov dword [esp + 0x14], 0xff3f
push edi
mov esi, dword [ebx + 0x2804]
mov dword [esp + 0x24], eax
nop dword [eax]
cmp eax, 0x40
jne 0x40f23c
cmp esi, 0x7ff
jbe 0x40f20d
mov edi, dword [ebx + 0x2808]
cmp edi, 1
jne 0x40ee82
mov ecx, dword [ebx + 0x2800]
push esi
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40f20b
lea ebp, [ebx + 0x800]
mov dword [esp + 0x20], ebp
cmp edi, 3
je 0x40f02a
cmp edi, 2
je 0x40f02a
cmp edi, 6
je 0x40f006
cmp edi, 5
je 0x40f009
cmp edi, 9
jne 0x40efff
mov edx, ebp
mov ecx, ebx
lea ebp, [edi + 0x36]
mov al, byte [ecx]
movzx ebx, al
cmp al, 0x80
jae 0x40ef10
mov byte [edx], al
inc ecx
inc edx
dec esi
test cl, 3
jne 0x40efec
cmp esi, 4
jb 0x40efec
mov eax, dword [ecx]
test eax, 0x80808080
jne 0x40eec0
mov byte [edx], al
sub esi, 4
mov al, byte [ecx + 1]
mov byte [edx + 1], al
mov al, byte [ecx + 2]
mov byte [edx + 2], al
mov al, byte [ecx + 3]
add ecx, 4
mov byte [edx + 3], al
add edx, 4
cmp esi, 4
jae 0x40eee0
jmp 0x40efec
lea eax, [ebx - 0xc0]
cmp eax, 0x20
jae 0x40ef56
cmp esi, 2
jb 0x40ef56
mov ah, byte [ecx + 1]
mov al, ah
and al, 0xc0
cmp al, 0x80
jne 0x40ef56
and ebx, 0xffffff3f
movzx eax, ah
and eax, 0x3f
shl ebx, 6
or ebx, eax
cmp ebx, 0xff
movzx eax, bl
cmova eax, ebp
add ecx, 2
mov byte [edx], al
inc edx
sub esi, 2
jmp 0x40efec
lea eax, [ebx - 0xe0]
cmp eax, 0x10
jae 0x40efb3
cmp esi, 3
jb 0x40efb3
mov ah, byte [ecx + 1]
mov al, ah
and al, 0xc0
cmp al, 0x80
jne 0x40efb3
mov al, byte [ecx + 2]
mov byte [esp + 0x30], al
and al, 0xc0
cmp al, 0x80
jne 0x40efb3
and ebx, 0xffffff1f
movzx eax, ah
and eax, 0x3f
shl ebx, 6
or ebx, eax
movzx eax, byte [esp + 0x30]
and eax, 0x3f
shl ebx, 6
or ebx, eax
cmp ebx, 0xff
movzx eax, bl
cmova eax, ebp
add ecx, 3
mov byte [edx], al
inc edx
sub esi, 3
jmp 0x40efec
lea eax, [ebx - 0xf0]
cmp eax, 8
jae 0x40efea
cmp esi, 4
jb 0x40efea
mov al, byte [ecx + 1]
and al, 0xc0
cmp al, 0x80
jne 0x40efea
mov al, byte [ecx + 2]
and al, 0xc0
cmp al, 0x80
jne 0x40efea
mov al, byte [ecx + 3]
and al, 0xc0
cmp al, 0x80
jne 0x40efea
mov byte [edx], 0x3f
add ecx, 4
inc edx
sub esi, 4
jmp 0x40efec
inc ecx
dec esi
test esi, esi
jne 0x40eec0
mov ebp, dword [esp + 0x20]
sub edx, ebp
jmp 0x40f1f6
xor edx, edx
jmp 0x40f1fa
cmp edi, 5
setne al
movzx eax, al
push eax
push dword [esp + 0x40]
push dword [esp + 0x44]
push esi
push ebx
push ebp
call fcn.00408580
add esp, 0x18
mov edx, eax
jmp 0x40f1fa
mov edx, ebp
nop dword [eax]
mov al, byte [ebx]
mov byte [esp + 0x30], al
cmp al, 0x80
jae 0x40f091
movzx eax, al
inc ebx
mov word [edx], ax
dec esi
add edx, 2
test bl, 3
jne 0x40f1c9
cmp esi, 4
jb 0x40f1c9
mov eax, dword [ebx]
test eax, 0x80808080
jne 0x40f030
movzx eax, al
sub esi, 4
mov word [edx], ax
movzx eax, byte [ebx + 1]
mov word [edx + 2], ax
movzx eax, byte [ebx + 2]
mov word [edx + 4], ax
movzx eax, byte [ebx + 3]
add ebx, 4
mov word [edx + 6], ax
add edx, 8
cmp esi, 4
jae 0x40f057
jmp 0x40f1c9
movzx ecx, al
lea eax, [ecx - 0xc0]
cmp eax, 0x20
jae 0x40f0d9
cmp esi, 2
jb 0x40f0d9
mov ah, byte [ebx + 1]
mov al, ah
and al, 0xc0
cmp al, 0x80
jne 0x40f0d9
mov al, byte [esp + 0x30]
and ah, 0x3f
movzx ecx, al
add ebx, 2
and cx, word [esp + 0x18]
shl cx, 6
movzx eax, ah
or cx, ax
mov word [edx], cx
add edx, 2
sub esi, 2
jmp 0x40f1c9
lea eax, [ecx - 0xe0]
cmp eax, 0x10
jae 0x40f12f
cmp esi, 3
jb 0x40f12f
mov ah, byte [ebx + 1]
mov al, ah
and al, 0xc0
cmp al, 0x80
jne 0x40f12f
mov al, byte [ebx + 2]
and al, 0xc0
cmp al, 0x80
jne 0x40f12f
and ah, 0x3f
movzx ecx, ah
movzx eax, byte [esp + 0x30]
shl ax, 6
or cx, ax
mov al, byte [ebx + 2]
and al, 0x3f
shl cx, 6
movzx eax, al
add ebx, 3
or cx, ax
mov word [edx], cx
add edx, 2
sub esi, 3
jmp 0x40f1c9
lea eax, [ecx - 0xf0]
cmp eax, 8
jae 0x40f1c7
cmp esi, 4
jb 0x40f1c7
mov ah, byte [ebx + 1]
mov al, ah
and al, 0xc0
cmp al, 0x80
jne 0x40f1c7
mov al, byte [ebx + 2]
mov byte [esp + 0x30], al
and al, 0xc0
cmp al, 0x80
jne 0x40f1c7
mov al, byte [ebx + 3]
mov byte [esp + 0x13], al
and al, 0xc0
cmp al, 0x80
jne 0x40f1c7
and ecx, 0xffffff0f
movzx eax, ah
and eax, 0x3f
shl ecx, 6
or ecx, eax
add ebx, 4
movzx eax, byte [esp + 0x30]
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx eax, byte [esp + 0x13]
and eax, 0x3f
shl ecx, 6
or ecx, eax
lea eax, [ecx - 0x10000]
and ecx, 0x3ff
shr eax, 0xa
sub ecx, 0x2400
sub eax, 0x2800
mov word [edx + 2], cx
mov word [edx], ax
add edx, 4
sub esi, 4
jmp 0x40f1c9
inc ebx
dec esi
test esi, esi
jne 0x40f030
cmp edi, 2
je 0x40f1f1
mov ecx, ebp
cmp ebp, edx
je 0x40f1f1
nop dword [eax]
mov ax, word [ecx]
rol ax, 8
mov word [ecx], ax
add ecx, 2
cmp ecx, edx
jne 0x40f1e0
sub edx, ebp
and edx, 0xfffffffe
mov ebx, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x2800]
push edx
push ebp
mov eax, dword [ecx]
call dword [eax + 4]
mov ebp, dword [esp + 0x14]
xor esi, esi
lea eax, [esi + 1]
mov byte [esi + ebx], 0xa
mov dword [ebx + 0x2804], eax
mov eax, dword [esp + 0x40]
inc eax
push eax
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push ebx
call fcn.00418de0
mov esi, dword [ebx + 0x2804]
add esp, 0x10
jmp 0x40f5f8
cmp esi, 0x7ff
jbe 0x40f5ed
mov edi, dword [ebx + 0x2808]
cmp edi, 1
jne 0x40f265
mov ecx, dword [ebx + 0x2800]
push esi
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40f5eb
lea ebp, [ebx + 0x800]
mov dword [esp + 0x20], ebp
cmp edi, 3
je 0x40f40d
cmp edi, 2
je 0x40f40d
cmp edi, 6
je 0x40f3e9
cmp edi, 5
je 0x40f3ec
cmp edi, 9
jne 0x40f3e2
mov edx, ebp
mov ecx, ebx
lea ebp, [edi + 0x36]
mov al, byte [ecx]
movzx ebx, al
cmp al, 0x80
jae 0x40f2f3
mov byte [edx], al
inc ecx
inc edx
dec esi
test cl, 3
jne 0x40f3cf
cmp esi, 4
jb 0x40f3cf
mov eax, dword [ecx]
test eax, 0x80808080
jne 0x40f2a3
mov byte [edx], al
sub esi, 4
mov al, byte [ecx + 1]
mov byte [edx + 1], al
mov al, byte [ecx + 2]
mov byte [edx + 2], al
mov al, byte [ecx + 3]
add ecx, 4
mov byte [edx + 3], al
add edx, 4
cmp esi, 4
jae 0x40f2c3
jmp 0x40f3cf
lea eax, [ebx - 0xc0]
cmp eax, 0x20
jae 0x40f339
cmp esi, 2
jb 0x40f339
mov ah, byte [ecx + 1]
mov al, ah
and al, 0xc0
cmp al, 0x80
jne 0x40f339
and ebx, 0xffffff3f
movzx eax, ah
and eax, 0x3f
shl ebx, 6
or ebx, eax
cmp ebx, 0xff
movzx eax, bl
cmova eax, ebp
add ecx, 2
mov byte [edx], al
inc edx
sub esi, 2
jmp 0x40f3cf
lea eax, [ebx - 0xe0]
cmp eax, 0x10
jae 0x40f396
cmp esi, 3
jb 0x40f396
mov ah, byte [ecx + 1]
mov al, ah
and al, 0xc0
cmp al, 0x80
jne 0x40f396
mov al, byte [ecx + 2]
mov byte [esp + 0x30], al
and al, 0xc0
cmp al, 0x80
jne 0x40f396
and ebx, 0xffffff1f
movzx eax, ah
and eax, 0x3f
shl ebx, 6
or ebx, eax
movzx eax, byte [esp + 0x30]
and eax, 0x3f
shl ebx, 6
or ebx, eax
cmp ebx, 0xff
movzx eax, bl
cmova eax, ebp
add ecx, 3
mov byte [edx], al
inc edx
sub esi, 3
jmp 0x40f3cf
lea eax, [ebx - 0xf0]
cmp eax, 8
jae 0x40f3cd
cmp esi, 4
jb 0x40f3cd
mov al, byte [ecx + 1]
and al, 0xc0
cmp al, 0x80
jne 0x40f3cd
mov al, byte [ecx + 2]
and al, 0xc0
cmp al, 0x80
jne 0x40f3cd
mov al, byte [ecx + 3]
and al, 0xc0
cmp al, 0x80
jne 0x40f3cd
mov byte [edx], 0x3f
add ecx, 4
inc edx
sub esi, 4
jmp 0x40f3cf
inc ecx
dec esi
test esi, esi
jne 0x40f2a3
mov ebp, dword [esp + 0x20]
sub edx, ebp
jmp 0x40f5d6
xor edx, edx
jmp 0x40f5da
cmp edi, 5
setne al
movzx eax, al
push eax
push dword [esp + 0x40]
push dword [esp + 0x44]
push esi
push ebx
push ebp
call fcn.00408580
add esp, 0x18
mov edx, eax
jmp 0x40f5da
mov edx, ebp
nop
mov al, byte [ebx]
mov byte [esp + 0x30], al
cmp al, 0x80
jae 0x40f471
movzx eax, al
inc ebx
mov word [edx], ax
dec esi
add edx, 2
test bl, 3
jne 0x40f5a9
cmp esi, 4
jb 0x40f5a9
mov eax, dword [ebx]
test eax, 0x80808080
jne 0x40f410
movzx eax, al
sub esi, 4
mov word [edx], ax
movzx eax, byte [ebx + 1]
mov word [edx + 2], ax
movzx eax, byte [ebx + 2]
mov word [edx + 4], ax
movzx eax, byte [ebx + 3]
add ebx, 4
mov word [edx + 6], ax
add edx, 8
cmp esi, 4
jae 0x40f437
jmp 0x40f5a9
movzx ecx, al
lea eax, [ecx - 0xc0]
cmp eax, 0x20
jae 0x40f4b9
cmp esi, 2
jb 0x40f4b9
mov ah, byte [ebx + 1]
mov al, ah
and al, 0xc0
cmp al, 0x80
jne 0x40f4b9
mov al, byte [esp + 0x30]
and ah, 0x3f
movzx ecx, al
add ebx, 2
and cx, word [esp + 0x18]
shl cx, 6
movzx eax, ah
or cx, ax
mov word [edx], cx
add edx, 2
sub esi, 2
jmp 0x40f5a9
lea eax, [ecx - 0xe0]
cmp eax, 0x10
jae 0x40f50f
cmp esi, 3
jb 0x40f50f
mov ah, byte [ebx + 1]
mov al, ah
and al, 0xc0
cmp al, 0x80
jne 0x40f50f
mov al, byte [ebx + 2]
and al, 0xc0
cmp al, 0x80
jne 0x40f50f
and ah, 0x3f
movzx ecx, ah
movzx eax, byte [esp + 0x30]
shl ax, 6
or cx, ax
mov al, byte [ebx + 2]
and al, 0x3f
shl cx, 6
movzx eax, al
add ebx, 3
or cx, ax
mov word [edx], cx
add edx, 2
sub esi, 3
jmp 0x40f5a9
lea eax, [ecx - 0xf0]
cmp eax, 8
jae 0x40f5a7
cmp esi, 4
jb 0x40f5a7
mov ah, byte [ebx + 1]
mov al, ah
and al, 0xc0
cmp al, 0x80
jne 0x40f5a7
mov al, byte [ebx + 2]
mov byte [esp + 0x30], al
and al, 0xc0
cmp al, 0x80
jne 0x40f5a7
mov al, byte [ebx + 3]
mov byte [esp + 0x13], al
and al, 0xc0
cmp al, 0x80
jne 0x40f5a7
and ecx, 0xffffff0f
movzx eax, ah
and eax, 0x3f
shl ecx, 6
or ecx, eax
add ebx, 4
movzx eax, byte [esp + 0x30]
and eax, 0x3f
shl ecx, 6
or ecx, eax
movzx eax, byte [esp + 0x13]
and eax, 0x3f
shl ecx, 6
or ecx, eax
lea eax, [ecx - 0x10000]
and ecx, 0x3ff
shr eax, 0xa
sub ecx, 0x2400
sub eax, 0x2800
mov word [edx + 2], cx
mov word [edx], ax
add edx, 4
sub esi, 4
jmp 0x40f5a9
inc ebx
dec esi
test esi, esi
jne 0x40f410
cmp edi, 2
je 0x40f5d1
mov ecx, ebp
cmp ebp, edx
je 0x40f5d1
nop dword [eax]
mov ax, word [ecx]
rol ax, 8
mov word [ecx], ax
add ecx, 2
cmp ecx, edx
jne 0x40f5c0
sub edx, ebp
and edx, 0xfffffffe
mov ebx, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x2800]
push edx
push ebp
mov eax, dword [ecx]
call dword [eax + 4]
mov ebp, dword [esp + 0x14]
xor esi, esi
mov byte [esi + ebx], 0x20
inc esi
mov dword [ebx + 0x2804], esi
mov eax, dword [ebp + 4]
mov edi, str.:anonymous
test eax, eax
cmovne edi, eax
mov al, byte [edi]
test al, al
je 0x40f623
nop dword [eax + eax]
cmp esi, 0x800
jae 0x40f633
inc edi
mov byte [esi + ebx], al
inc esi
mov al, byte [edi]
test al, al
jne 0x40f610
cmp esi, 0x800
jae 0x40f633
mov dword [ebx + 0x2804], esi
jmp 0x40f67d
mov ebp, dword [esp + 0x2c]
mov ebx, esi
mov eax, edi
sub ebx, dword [ebp + 0x2804]
sub eax, ebx
push ebx
push eax
call fcn.0040dd40
mov ecx, edi
sub ebx, eax
add esp, 8
sub esi, ebx
mov dword [ebp + 0x2804], esi
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40f660
sub ecx, edx
sub edi, ebx
lea eax, [ecx + ebx]
mov ebx, ebp
push eax
push edi
mov ecx, ebx
call fcn.00419fe0
mov ebp, dword [esp + 0x14]
mov eax, dword [ebx + 0x2804]
cmp eax, 0x7fe
jbe 0x40f695
push eax
push ebx
mov ecx, ebx
call fcn.0040dc30
xor eax, eax
mov ecx, dword [esp + 0x1c]
mov byte [eax + ebx], 0x3d
mov byte [eax + ebx + 1], cl
add eax, 2
mov dword [ebx + 0x2804], eax
mov eax, dword [ebp + 8]
test eax, eax
je 0x40f6d1
mov ecx, dword [esp + 0x3c]
test cl, 0x10
je 0x40f6c4
push eax
mov ecx, ebx
call fcn.0041a170
jmp 0x40f6d1
push ecx
push 2
push eax
push ebx
call fcn.00417d40
add esp, 0x10
mov esi, dword [ebx + 0x2804]
cmp esi, 0x7ff
jbe 0x40faa1
mov edi, dword [ebx + 0x2808]
cmp edi, 1
jne 0x40f700
mov ecx, dword [ebx + 0x2800]
push esi
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40fa9f
lea ebp, [ebx + 0x800]
mov dword [esp + 0x30], ebp
cmp edi, 3
je 0x40f8af
cmp edi, 2
je 0x40f8af
cmp edi, 6
je 0x40f88d
cmp edi, 5
je 0x40f890
cmp edi, 9
jne 0x40f886
mov eax, ebp
lea ebp, [edi + 0x36]
nop dword [eax]
mov cl, byte [ebx]
movzx edi, cl
cmp cl, 0x80
jae 0x40f792
mov byte [eax], cl
inc ebx
inc eax
dec esi
test bl, 3
jne 0x40f873
cmp esi, 4
jb 0x40f873
mov ecx, dword [ebx]
test ecx, 0x80808080
jne 0x40f740
mov byte [eax], cl
sub esi, 4
mov cl, byte [ebx + 1]
mov byte [eax + 1], cl
mov cl, byte [ebx + 2]
mov byte [eax + 2], cl
mov cl, byte [ebx + 3]
add ebx, 4
mov byte [eax + 3], cl
add eax, 4
cmp esi, 4
jae 0x40f761
jmp 0x40f873
lea ecx, [edi - 0xc0]
cmp ecx, 0x20
jae 0x40f7d9
cmp esi, 2
jb 0x40f7d9
mov dl, byte [ebx + 1]
mov cl, dl
and cl, 0xc0
cmp cl, 0x80
jne 0x40f7d9
and edi, 0xffffff3f
movzx edx, dl
and edx, ebp
shl edi, 6
or edx, edi
cmp edx, 0xff
movzx ecx, dl
cmova ecx, ebp
add ebx, 2
mov byte [eax], cl
inc eax
sub esi, 2
jmp 0x40f873
lea ecx, [edi - 0xe0]
cmp ecx, 0x10
jae 0x40f834
cmp esi, 3
jb 0x40f834
mov dl, byte [ebx + 1]
mov cl, dl
and cl, 0xc0
cmp cl, 0x80
jne 0x40f834
mov ch, byte [ebx + 2]
mov cl, ch
and cl, 0xc0
cmp cl, 0x80
jne 0x40f834
movzx edx, dl
and edi, 0xffffff1f
and edx, ebp
shl edi, 6
or edx, edi
movzx ecx, ch
and ecx, ebp
shl edx, 6
or edx, ecx
cmp edx, 0xff
movzx ecx, dl
cmova ecx, ebp
add ebx, 3
mov byte [eax], cl
inc eax
sub esi, 3
jmp 0x40f873
lea ecx, [edi - 0xf0]
cmp ecx, 8
jae 0x40f871
cmp esi, 4
jb 0x40f871
mov cl, byte [ebx + 1]
and cl, 0xc0
cmp cl, 0x80
jne 0x40f871
mov cl, byte [ebx + 2]
and cl, 0xc0
cmp cl, 0x80
jne 0x40f871
mov cl, byte [ebx + 3]
and cl, 0xc0
cmp cl, 0x80
jne 0x40f871
mov byte [eax], 0x3f
add ebx, 4
inc eax
sub esi, 4
jmp 0x40f873
inc ebx
dec esi
test esi, esi
jne 0x40f740
mov ebp, dword [esp + 0x30]
sub eax, ebp
jmp 0x40fa8a
xor eax, eax
jmp 0x40fa8e
cmp edi, 5
setne al
movzx eax, al
push eax
push dword [esp + 0x40]
push dword [esp + 0x44]
push esi
push ebx
push ebp
call fcn.00408580
add esp, 0x18
jmp 0x40fa8e
mov eax, ebp
mov cl, byte [ebx]
mov byte [esp + 0x30], cl
cmp cl, 0x80
jae 0x40f91b
movzx ecx, cl
inc ebx
mov word [eax], cx
dec esi
add eax, 2
test bl, 3
jne 0x40fa61
cmp esi, 4
jb 0x40fa61
nop dword [eax]
mov ecx, dword [ebx]
test ecx, 0x80808080
jne 0x40f8b1
movzx ecx, cl
sub esi, 4
mov word [eax], cx
movzx ecx, byte [ebx + 1]
mov word [eax + 2], cx
movzx ecx, byte [ebx + 2]
mov word [eax + 4], cx
movzx ecx, byte [ebx + 3]
add ebx, 4
mov word [eax + 6], cx
add eax, 8
cmp esi, 4
jae 0x40f8e0
jmp 0x40fa61
movzx edx, cl
lea ecx, [edx - 0xc0]
cmp ecx, 0x20
jae 0x40f965
cmp esi, 2
jb 0x40f965
mov ch, byte [ebx + 1]
mov cl, ch
and cl, 0xc0
cmp cl, 0x80
jne 0x40f965
mov cl, byte [esp + 0x30]
and ch, 0x3f
movzx edx, cl
add ebx, 2
and dx, word [esp + 0x18]
shl dx, 6
movzx ecx, ch
or dx, cx
mov word [eax], dx
add eax, 2
sub esi, 2
jmp 0x40fa61
lea ecx, [edx - 0xe0]
cmp ecx, 0x10
jae 0x40f9c0
cmp esi, 3
jb 0x40f9c0
mov ch, byte [ebx + 1]
mov cl, ch
and cl, 0xc0
cmp cl, 0x80
jne 0x40f9c0
mov cl, byte [ebx + 2]
and cl, 0xc0
cmp cl, 0x80
jne 0x40f9c0
and ch, 0x3f
movzx edx, ch
movzx ecx, byte [esp + 0x30]
shl cx, 6
or dx, cx
mov cl, byte [ebx + 2]
and cl, 0x3f
shl dx, 6
movzx ecx, cl
add ebx, 3
or dx, cx
mov word [eax], dx
add eax, 2
sub esi, 3
jmp 0x40fa61
lea ecx, [edx - 0xf0]
cmp ecx, 8
jae 0x40fa5f
cmp esi, 4
jb 0x40fa5f
mov ch, byte [ebx + 1]
mov cl, ch
and cl, 0xc0
cmp cl, 0x80
jne 0x40fa5f
mov cl, byte [ebx + 2]
mov byte [esp + 0x30], cl
and cl, 0xc0
cmp cl, 0x80
jne 0x40fa5f
mov cl, byte [ebx + 3]
mov byte [esp + 0x13], cl
and cl, 0xc0
cmp cl, 0x80
jne 0x40fa5f
and edx, 0xffffff0f
movzx ecx, ch
and ecx, 0x3f
shl edx, 6
or edx, ecx
add ebx, 4
movzx ecx, byte [esp + 0x30]
and ecx, 0x3f
shl edx, 6
or edx, ecx
movzx ecx, byte [esp + 0x13]
and ecx, 0x3f
shl edx, 6
or edx, ecx
lea ecx, [edx - 0x10000]
and edx, 0x3ff
shr ecx, 0xa
sub edx, 0x2400
sub ecx, 0x2800
mov word [eax + 2], dx
mov word [eax], cx
add eax, 4
sub esi, 4
jmp 0x40fa61
inc ebx
dec esi
test esi, esi
jne 0x40f8b1
cmp edi, 2
je 0x40fa85
mov edx, ebp
cmp ebp, eax
je 0x40fa85
mov cx, word [edx]
rol cx, 8
mov word [edx], cx
add edx, 2
cmp edx, eax
jne 0x40fa74
sub eax, ebp
and eax, 0xfffffffe
mov ebx, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x2800]
push eax
push ebp
mov edx, dword [ecx]
call dword [edx + 4]
mov ebp, dword [esp + 0x14]
xor esi, esi
mov eax, dword [esp + 0x1c]
mov byte [esi + ebx], al
inc esi
mov eax, dword [esp + 0x24]
mov dword [ebx + 0x2804], esi
mov ebp, dword [ebp + 0x10]
mov dword [esp + 0x14], ebp
test ebp, ebp
jne 0x40ee50
pop edi
pop esi
pop ebx
pop ebp
add esp, 0x18
ret