Function at 0x410815
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x678
mov ebx, dword [ebp + 8]
mov al, byte [esp + 0x17c]
mov byte [esp + 0x180], al
mov byte [esp + 0x3b4], 0x47
mov byte [esp + 0x3b5], 0x39
mov eax, 2
mov byte [esp + eax + 0x3b4], 0
add eax, 1
cmp eax, 8
jne 0x40faf5
xor eax, eax
cmp eax, 8
jae 0x40fb3c
mov dl, byte [esp + eax + 0x3b4]
mov esi, eax
and esi, 0x36
mov edi, eax
and edi, 0xc9
mov ecx, eax
xor ecx, 0x36
add ecx, eax
sub ecx, edi
add ecx, esi
xor cl, dl
add cl, 0xf2
mov byte [esp + eax + 0x3b4], cl
add eax, 1
jmp 0x40fb07
lea eax, [esp + 0x3b4]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401af0
mov ebx, eax
cmp ebx, 0
jne 0x40fb5d
xor eax, eax
jmp 0x412afc
xor edi, edi
jmp 0x40fb61
mov dword [esp], ebx
call fcn.00402040
cmp edi, eax
jb 0x40fb74
mov al, 1
jmp 0x412afc
mov dword [esp], ebx
mov dword [esp + 4], edi
call fcn.00402050
mov dword [esp + 0x24], eax
mov al, byte [esp + 0x178]
mov byte [esp + 0x184], al
mov byte [esp + 0x3ac], 0x90
mov byte [esp + 0x3ad], 0xfb
mov eax, 2
mov byte [esp + eax + 0x3ac], 0
add eax, 1
cmp eax, 5
jne 0x40fba7
xor eax, eax
cmp eax, 5
jae 0x40fbe7
mov dl, byte [esp + eax + 0x3ac]
mov esi, eax
xor esi, 1
mov ecx, eax
shl ecx, 1
and ecx, 0xfc
sub ecx, esi
xor cl, dl
add cl, 5
mov byte [esp + eax + 0x3ac], cl
add eax, 1
jmp 0x40fbb9
jmp 0x40fbe9
lea eax, [esp + 0x3ac]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401f20
cmp eax, 0
setne al
xor al, 0xff
and al, 1
or al, 0
test al, 1
jne 0x40fc1a
jmp 0x40fc1f
jmp 0x412af4
mov al, byte [esp + 0x174]
mov byte [esp + 0x188], al
mov byte [esp + 0x3a4], 0xf0
mov byte [esp + 0x3a5], 0x5b
mov eax, 2
mov byte [esp + eax + 0x3a4], 0
add eax, 1
cmp eax, 7
jne 0x40fc42
mov dword [esp + 0x28], edi
xor eax, eax
cmp eax, 7
jae 0x40fc95
movzx edx, byte [esp + eax + 0x3a4]
mov ecx, eax
add ecx, 0xfed7bd6f
mov esi, edx
xor esi, 0xffffffff
mov edi, ecx
and edi, esi
mov esi, eax
shl esi, 1
add esi, 0xdf
sub ecx, esi
and ecx, edx
or ecx, edi
add cl, 0xd5
mov byte [esp + eax + 0x3a4], cl
add eax, 1
jmp 0x40fc58
lea eax, [esp + 0x3a4]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004019c0
fnstcw word [esp + 0x66]
movzx eax, word [esp + 0x66]
or eax, 0xc00
mov word [esp + 0x252], ax
fldcw word [esp + 0x252]
fistp dword [esp + 0x414]
fldcw word [esp + 0x66]
mov eax, dword [esp + 0x414]
mov edi, dword [esp + 0x28]
mov ecx, eax
sub ecx, 3
ja 0x412af2
mov eax, dword [eax*4 + 0x442588]
jmp eax
mov al, byte [esp + 0x170]
mov byte [esp + 0x18c], al
mov byte [esp + 0x39c], 0x74
mov byte [esp + 0x39d], 0xeb
mov eax, 2
mov byte [esp + eax + 0x39c], 0
add eax, 1
cmp eax, 5
jne 0x40fd16
xor eax, eax
cmp eax, 5
jae 0x40fd86
movzx edx, byte [esp + eax + 0x39c]
mov esi, edx
shl esi, 1
xor esi, 0xffffffff
add esi, edx
mov ecx, edx
xor ecx, 0xffffffff
and esi, ecx
mov ecx, 0x28
sub ecx, eax
mov edi, 0x28
sub edi, eax
and ecx, edi
or ecx, esi
mov esi, edx
shl esi, 1
xor esi, 0xffffffff
add esi, edx
mov edx, 0x28
sub edx, eax
mov edi, 0x28
sub edi, eax
or edx, edi
and esi, edx
xor esi, 0xffffffff
and ecx, esi
add cl, 0xcd
mov byte [esp + eax + 0x39c], cl
add eax, 1
jmp 0x40fd28
lea eax, [esp + 0x39c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f20
cmp eax, 0
mov edi, dword [esp + 0x28]
je 0x4100f4
mov al, byte [esp + 0x164]
mov byte [esp + 0x190], al
mov byte [esp + 0x168], 0x3b
mov byte [esp + 0x169], 0x3f
mov byte [esp + 0x16a], 0x3e
mov byte [esp + 0x16b], 0x31
mov eax, 4
mov byte [esp + eax + 0x168], 0
add eax, 1
cmp eax, 8
jne 0x40fde5
xor eax, eax
cmp eax, 8
jae 0x40fe3d
movzx edx, byte [esp + eax + 0x168]
mov esi, eax
add esi, 0x6bf43035
mov edi, eax
add edi, 0x6bf43035
mov ecx, esi
and ecx, edi
mov edi, dword [esp + 0x28]
or ecx, edx
and esi, edx
sub ecx, esi
mov edx, ecx
shl edx, 1
and edx, 0xec
xor ecx, 9
sub edx, ecx
mov byte [esp + eax + 0x168], dl
add eax, 1
jmp 0x40fdf7
mov eax, dword [esp + 0x168]
mov cl, byte [esp + 0x160]
mov byte [esp + 0x194], cl
mov byte [esp + 0x394], 0x8d
mov byte [esp + 0x395], 0x19
mov ecx, 2
mov byte [esp + ecx + 0x394], 0
add ecx, 1
cmp ecx, 8
jne 0x40fe67
xor ecx, ecx
cmp ecx, 8
jae 0x40feb2
movzx esi, byte [esp + ecx + 0x394]
mov edx, ecx
add edx, 0x91251c6
xor edx, esi
mov esi, edx
and esi, 0x81
xor esi, 0x81
and edx, 0x7e
sub edx, esi
add dl, 0xa3
mov byte [esp + ecx + 0x394], dl
add ecx, 1
jmp 0x40fe79
lea ecx, [esp + 0x394]
mov edx, dword [esp + 0x24]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.00401f20
cmp eax, 0
setne al
test al, 1
jne 0x40fedc
jmp 0x4100f4
mov al, byte [esp + 0x15c]
mov byte [esp + 0x198], al
mov byte [esp + 0x38c], 0xba
mov byte [esp + 0x38d], 0x3b
mov eax, 2
mov byte [esp + eax + 0x38c], 0
add eax, 1
cmp eax, 5
jne 0x40feff
xor eax, eax
cmp eax, 5
jae 0x40ff52
movzx edx, byte [esp + eax + 0x38c]
mov esi, eax
shl esi, 1
and esi, 0x8302fe16
mov ecx, eax
xor ecx, 0x41817f0b
add ecx, esi
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, 0xc8
add ecx, edx
mov byte [esp + eax + 0x38c], cl
add eax, 1
jmp 0x40ff11
lea eax, [esp + 0x38c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f20
cmp eax, 0
je 0x4100f4
mov al, byte [esp + 0x158]
mov byte [esp + 0x19c], al
mov byte [esp + 0x384], 0x60
mov byte [esp + 0x385], 0xdb
mov eax, 2
mov byte [esp + eax + 0x384], 0
add eax, 1
cmp eax, 5
jne 0x40ff9d
mov dword [esp + 0x2c], ebx
xor eax, eax
cmp eax, 5
jae 0x41002e
movzx edx, byte [esp + eax + 0x384]
mov esi, 0x2ebd9d0
sub esi, eax
mov ecx, 0x2ebd9d0
sub ecx, eax
and esi, ecx
xor esi, 0xffffffff
mov edi, edx
xor edi, 0xffffffff
shl edi, 1
add edi, edx
mov ecx, 0xfffffffe
sub ecx, edi
and ecx, esi
mov esi, 0x2ebd9d0
sub esi, eax
xor edx, 0xffffffff
and esi, edx
or ecx, esi
mov esi, 0xe9b4113
sub esi, ecx
mov edx, esi
shl edx, 1
and edx, 2
shl esi, 1
and esi, 2
add ecx, esi
mov ebx, 0xe9b4114
sub ebx, ecx
mov ecx, ebx
and ecx, edx
shl ecx, 1
xor ebx, edx
add ebx, ecx
mov byte [esp + eax + 0x384], bl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40ffb3
lea eax, [esp + 0x384]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401f20
cmp eax, 0
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
je 0x4100f4
mov al, byte [esp + 0x154]
mov byte [esp + 0x1a0], al
mov byte [esp + 0x29c], 0xc2
mov byte [esp + 0x29d], 0xb6
mov byte [esp + 0x29e], 0x36
mov eax, 3
mov byte [esp + eax + 0x29c], 0
add eax, 1
cmp eax, 6
jne 0x410089
xor eax, eax
cmp eax, 6
jae 0x4100bd
mov cl, byte [esp + eax + 0x29c]
mov dl, al
add dl, 0x76
xor dl, cl
add dl, 0xb2
mov byte [esp + eax + 0x29c], dl
add eax, 1
jmp 0x41009b
lea eax, [esp + 0x29c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401f20
cmp eax, 0
setne al
xor al, 0xff
and al, 1
or al, 0
xor al, 0
test al, 1
jne 0x412af2
jmp 0x4100f9
jmp 0x412af2
mov al, byte [esp + 0x150]
mov byte [esp + 0x1a4], al
mov byte [esp + 0x37c], 0x88
mov byte [esp + 0x37d], 0x19
mov eax, 2
mov byte [esp + eax + 0x37c], 0
add eax, 1
cmp eax, 7
jne 0x41011c
xor eax, eax
cmp eax, 7
jae 0x410162
mov dl, byte [esp + eax + 0x37c]
mov ecx, eax
add ecx, 0x42
mov esi, 0x3d
sub esi, eax
and esi, 0x7c
and ecx, 0x83
sub ecx, esi
xor cl, dl
add cl, 0x22
mov byte [esp + eax + 0x37c], cl
add eax, 1
jmp 0x41012e
lea eax, [esp + 0x37c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x2c8], eax
mov al, byte [esp + 0x14c]
mov byte [esp + 0x1a8], al
mov byte [esp + 0x58], 0x63
mov byte [esp + 0x59], 0xcf
mov eax, 2
mov byte [esp + eax + 0x58], 0
add eax, 1
cmp eax, 4
jne 0x41019d
xor eax, eax
cmp eax, 4
jae 0x4101de
movzx edx, byte [esp + eax + 0x58]
mov ecx, eax
add ecx, 0x769f512d
mov esi, ecx
shl esi, 1
mov edi, eax
add edi, 0x2c
sub edi, esi
and edi, edx
xor edx, 0xffffffff
and ecx, edx
or ecx, edi
add cl, 0x1f
mov byte [esp + eax + 0x58], cl
add eax, 1
jmp 0x4101ac
lea eax, [esp + 0x58]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401af0
mov dword [esp + 0x2d4], eax
mov al, byte [esp + 0x148]
mov byte [esp + 0x1ac], al
mov byte [esp + 0x374], 0xa
mov byte [esp + 0x375], 0x8b
mov eax, 2
mov byte [esp + eax + 0x374], 0
add eax, 1
cmp eax, 5
jne 0x41021c
xor eax, eax
cmp eax, 5
jae 0x410261
movzx ecx, byte [esp + eax + 0x374]
mov edx, eax
add edx, 0xdb67a7a3
xor edx, ecx
mov ecx, edx
and ecx, 1
or edx, 1
add edx, 0xd0
add ecx, edx
mov byte [esp + eax + 0x374], cl
add eax, 1
jmp 0x41022e
lea eax, [esp + 0x374]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x2d0], eax
mov al, byte [esp + 0x144]
mov byte [esp + 0x1b0], al
mov byte [esp + 0x36c], 0xa0
mov byte [esp + 0x36d], 0x7b
mov eax, 2
mov byte [esp + eax + 0x36c], 0
add eax, 1
cmp eax, 6
jne 0x4102a2
xor eax, eax
cmp eax, 6
jae 0x4102df
mov dl, byte [esp + eax + 0x36c]
mov esi, eax
shl esi, 1
and esi, 0x7e
mov ecx, eax
xor ecx, 0x3f
add ecx, esi
xor cl, dl
add cl, 0xc5
mov byte [esp + eax + 0x36c], cl
add eax, 1
jmp 0x4102b4
lea eax, [esp + 0x36c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004019c0
fnstcw word [esp + 0x64]
movzx eax, word [esp + 0x64]
or eax, 0xc00
mov word [esp + 0x250], ax
fldcw word [esp + 0x250]
fistp dword [esp + 0x408]
fldcw word [esp + 0x64]
mov eax, dword [esp + 0x408]
mov dword [esp + 0x3f0], eax
mov al, byte [esp + 0x140]
mov byte [esp + 0x1b4], al
mov byte [esp + 0x40], 0x4e
mov byte [esp + 0x41], 0x7e
mov byte [esp + 0x42], 0xea
mov eax, 3
mov byte [esp + eax + 0x40], 0
add eax, 1
cmp eax, 4
jne 0x41034e
xor eax, eax
cmp eax, 4
jae 0x4103b6
mov dl, byte [esp + eax + 0x40]
movzx esi, dl
mov ecx, eax
add ecx, 0x6dd06fd7
mov edi, ecx
and edi, esi
shl edi, 1
mov ebx, ecx
sub ebx, edi
add ebx, esi
mov esi, 0x922f9028
sub esi, eax
or esi, ebx
mov edi, esi
xor edi, 0xffffffff
mov ebx, edi
and ebx, 0xfd
and esi, 2
imul esi, ebx
mov ebx, edi
and ebx, 2
or edi, 2
imul edi, ebx
add edi, esi
sub ecx, edi
add cl, dl
add cl, 0xcd
mov byte [esp + eax + 0x40], cl
add eax, 1
jmp 0x41035d
lea eax, [esp + 0x40]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004019c0
fnstcw word [esp + 0x62]
movzx eax, word [esp + 0x62]
or eax, 0xc00
mov word [esp + 0x24e], ax
fldcw word [esp + 0x24e]
fistp dword [esp + 0x404]
fldcw word [esp + 0x62]
mov eax, dword [esp + 0x404]
mov dword [esp + 0x3ec], eax
mov al, byte [esp + 0x13c]
mov byte [esp + 0x1b8], al
mov byte [esp + 0x294], 0xf2
mov byte [esp + 0x295], 0xf5
mov byte [esp + 0x296], 0xe
mov eax, 3
mov byte [esp + eax + 0x294], 0
add eax, 1
cmp eax, 7
jne 0x41042b
xor eax, eax
cmp eax, 7
jae 0x410484
movzx edx, byte [esp + eax + 0x294]
mov ecx, eax
add ecx, 0x6620c542
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
mov edx, ecx
sub edx, esi
add edx, 0xb5
and ecx, 1
or edx, 1
add edx, 0xff
or ecx, edx
xor cl, 1
add cl, 1
mov byte [esp + eax + 0x294], cl
add eax, 1
jmp 0x41043d
lea eax, [esp + 0x294]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401c20
cmp eax, 0
setg byte [esp + 0x35]
mov eax, dword [esp + 0x2c8]
mov dword [esp], eax
call fcn.00414af0
mov ebx, eax
mov esi, ebx
sub esi, 0xffffffff
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4104d1
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], esi
mov eax, dword [esp + 0x2c8]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040bd70
xor eax, eax
lea eax, [esp + 0x138]
mov dword [esp], 0
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x44c004]
sub esp, 0x18
mov cl, byte [esp + 0x12c]
mov byte [esp + 0x1bc], cl
mov byte [esp + 0x130], 0xd3
mov byte [esp + 0x131], 0xf1
mov byte [esp + 0x132], 0xf2
mov byte [esp + 0x133], 0xb3
mov ecx, 4
mov byte [esp + ecx + 0x130], 0
add ecx, 1
cmp ecx, 6
jne 0x410564
xor ecx, ecx
cmp ecx, 6
jae 0x410598
mov dl, byte [esp + ecx + 0x130]
mov dh, cl
add dh, 0x2c
xor dh, dl
add dh, 0x24
mov byte [esp + ecx + 0x130], dh
add ecx, 1
jmp 0x410576
mov ecx, dword [esp + 0x130]
cmp eax, ecx
je 0x4105ba
jmp 0x4105a5
mov dword [esp], edi
call fcn.004095d0
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
jmp 0x410810
mov eax, dword [esp + 0x138]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4105d7
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
mov esi, eax
mov eax, dword [0x44c004]
mov ecx, dword [esp + 0x138]
xor edx, edx
lea edx, [esp + 0x138]
mov dword [esp], 0
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call eax
sub esp, 0x18
cmp eax, 0
setge al
test al, 1
mov ebx, dword [esp + 0x2c]
jne 0x410639
jmp 0x410626
jmp 0x410628
mov dword [esp], edi
call fcn.004095d0
mov edi, dword [esp + 0x28]
jmp 0x41080e
jmp 0x41063b
mov dword [esp + 0x2c0], esi
mov dword [esp], edi
call fcn.004095d0
mov eax, dword [esp + 0x2d0]
mov dword [esp], eax
call fcn.00414af0
mov esi, eax
mov eax, esi
and eax, 1
or esi, 1
add esi, eax
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
mov edi, dword [esp + 0x28]
jne 0x410681
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
xor ecx, ecx
mov dword [esp + 0x2b4], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov eax, dword [esp + 0x2d0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040bd70
lea ecx, [esp + 0x5e8]
mov dword [esp], 1
call fcn.0040a120
sub esp, 4
mov dword [esp + 0x2a4], 0
mov esi, dword [esp + 0x2d4]
mov dword [esp], esi
call fcn.00402040
mov ecx, dword [esp + 0x2a4]
cmp ecx, eax
mov eax, ecx
jb 0x4106f3
jmp 0x4107d4
mov dword [esp], esi
mov esi, eax
mov dword [esp + 4], eax
call fcn.00402020
mov dword [esp], eax
call fcn.004019a0
mov ebx, eax
cmp ebx, 0
jne 0x410715
jmp 0x4107ba
mov dword [esp], ebx
call fcn.00414af0
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41073a
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], edi
mov edi, eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040bd70
mov eax, dword [esp + 0x3f0]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x3ec]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edi
mov eax, dword [esp + 0x2c0]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x2b4]
mov dword [esp + 4], eax
lea eax, [esp + 0x5e8]
mov dword [esp], eax
xor eax, eax
mov cl, byte [esp + 0x35]
mov al, cl
and eax, 1
mov dword [esp + 0x18], eax
call fcn.00421780
mov dword [esp], edi
call fcn.004095d0
mov edi, dword [esp + 0x28]
jmp 0x4107ba
sub esi, 0xffffffff
mov dword [esp + 0x2a4], esi
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x2d4]
jmp 0x4106d9
mov eax, dword [esp + 0x2b4]
mov dword [esp], eax
call fcn.004095d0
mov eax, dword [esp + 0x2c0]
jmp 0x4107ec
mov dword [esp], eax
call fcn.004095d0
lea ecx, [esp + 0x5e8]
call fcn.0040ab80
lea ecx, [esp + 0x5e8]
call fcn.0040a200
jmp 0x41080e
jmp 0x410810
jmp 0x412af2
mov al, byte [esp + 0x128]
mov byte [esp + 0x1c0], al
mov byte [esp + 0x364], 0x7d
mov byte [esp + 0x365], 0xdb
mov eax, 2
mov byte [esp + eax + 0x364], 0
add eax, 1
cmp eax, 7
jne 0x410838
mov dword [esp + 0x2c], ebx
xor eax, eax
cmp eax, 7
jae 0x410896
movzx edx, byte [esp + eax + 0x364]
mov ecx, eax
add ecx, 0xe5d3ee2f
xor ecx, edx
mov esi, 1
sub esi, ecx
mov edx, ecx
and edx, 1
and esi, 1
xor esi, 1
or edx, esi
shl edx, 1
mov ebx, ecx
or ebx, 1
add ebx, 0x14
and ecx, 1
sub ebx, ecx
add ebx, edx
mov byte [esp + eax + 0x364], bl
add eax, 1
jmp 0x41084e
lea eax, [esp + 0x364]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f20
cmp eax, 0
mov ebx, dword [esp + 0x2c]
je 0x410be7
mov al, byte [esp + 0x124]
mov byte [esp + 0x1c4], al
mov byte [esp + 0x35c], 0x8c
mov byte [esp + 0x35d], 0x1f
mov eax, 2
mov byte [esp + eax + 0x35c], 0
add eax, 1
cmp eax, 6
jne 0x4108e5
xor eax, eax
cmp eax, 6
jae 0x41094f
movzx edx, byte [esp + eax + 0x35c]
mov esi, eax
add esi, 0x31fea85
mov ecx, 0xe4e0157a
sub ecx, eax
and ecx, 0xfd1a432d
and esi, 0x2e5bcd2
or ecx, esi
xor ecx, edx
xor ecx, 0xfd1a432d
mov edx, ecx
add edx, 0xc0
mov esi, 0x3f
sub esi, ecx
and esi, 0x59
and edx, 0xa6
sub edx, esi
mov byte [esp + eax + 0x35c], dl
add eax, 1
jmp 0x4108f7
lea eax, [esp + 0x35c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f20
cmp eax, 0
je 0x410be7
mov al, byte [esp + 0x120]
mov byte [esp + 0x1c8], al
mov byte [esp + 0x54], 0xbd
mov byte [esp + 0x55], 0x21
mov eax, 2
mov byte [esp + eax + 0x54], 0
add eax, 1
cmp eax, 4
jne 0x410994
xor eax, eax
cmp eax, 4
jae 0x4109d0
movzx esi, byte [esp + eax + 0x54]
mov ecx, 7
sub ecx, eax
or ecx, esi
xor ecx, 0xffffffff
mov edx, 7
sub edx, eax
and edx, esi
or edx, ecx
add dl, 0x28
mov byte [esp + eax + 0x54], dl
add eax, 1
jmp 0x4109a3
lea eax, [esp + 0x54]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 5
call fcn.00401f20
cmp eax, 0
je 0x410be7
mov al, byte [esp + 0x11c]
mov byte [esp + 0x1cc], al
mov byte [esp + 0x50], 0xfa
mov byte [esp + 0x51], 0x6b
mov eax, 2
mov byte [esp + eax + 0x50], 0
add eax, 1
cmp eax, 4
jne 0x410a12
xor eax, eax
cmp eax, 4
jae 0x410a52
mov dl, byte [esp + eax + 0x50]
mov esi, eax
add esi, 0x17
mov ecx, 0x68
sub ecx, eax
and ecx, 0x87
and esi, 0x78
or ecx, esi
xor cl, dl
xor cl, 0x87
add cl, 0xd
mov byte [esp + eax + 0x50], cl
add eax, 1
jmp 0x410a21
lea eax, [esp + 0x50]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f20
cmp eax, 0
setne al
jmp 0x410a76
test al, 1
jne 0x410a7f
jmp 0x410be7
mov al, byte [esp + 0x118]
mov byte [esp + 0x1d0], al
mov byte [esp + 0x354], 0x28
mov byte [esp + 0x355], 0x87
mov eax, 2
mov byte [esp + eax + 0x354], 0
add eax, 1
cmp eax, 6
jne 0x410aa2
xor eax, eax
cmp eax, 6
jae 0x410aec
mov dl, byte [esp + eax + 0x354]
mov esi, eax
add esi, 0x61
mov ecx, 0x9e
sub ecx, eax
and ecx, 0xb5
and esi, 0x4a
or ecx, esi
xor cl, dl
xor cl, 0x4a
mov dl, 0x1a
sub dl, cl
mov byte [esp + eax + 0x354], dl
add eax, 1
jmp 0x410ab4
lea eax, [esp + 0x354]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401f20
cmp eax, 0
je 0x410be7
mov al, byte [esp + 0x114]
mov byte [esp + 0x1d4], al
mov byte [esp + 0x28c], 0xc2
mov byte [esp + 0x28d], 0xf6
mov byte [esp + 0x28e], 0x76
mov eax, 3
mov byte [esp + eax + 0x28c], 0
add eax, 1
cmp eax, 6
jne 0x410b3f
xor eax, eax
cmp eax, 6
jae 0x410bb2
movzx edx, byte [esp + eax + 0x28c]
mov esi, 0xe9
sub esi, eax
mov ecx, 0xe9
sub ecx, eax
and esi, ecx
xor esi, 0xffffffff
mov ecx, edx
and ecx, esi
mov esi, eax
add esi, 0xa8a78216
mov edi, eax
add edi, 0xa8a78216
and esi, edi
or esi, edx
xor esi, 0xffffffff
or ecx, esi
mov edx, ecx
shl edx, 1
xor edx, 0xffffffff
add ecx, edx
mov edx, ecx
xor edx, 0x6f
shl ecx, 1
and ecx, 0x20
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0x28c], cl
add eax, 1
jmp 0x410b51
lea eax, [esp + 0x28c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401f20
cmp eax, 0
setne al
xor al, 0xff
test al, 1
mov edi, dword [esp + 0x28]
jne 0x412af2
jmp 0x410bec
jmp 0x412af2
mov al, byte [esp + 0x110]
mov byte [esp + 0x1d8], al
mov byte [esp + 0x34c], 0xed
mov byte [esp + 0x34d], 0x47
mov eax, 2
mov byte [esp + eax + 0x34c], 0
add eax, 1
cmp eax, 7
jne 0x410c0f
xor eax, eax
cmp eax, 7
jae 0x410c71
movzx ecx, byte [esp + eax + 0x34c]
mov esi, eax
shl esi, 1
and esi, 0xa220c8e2
mov edi, eax
shl edi, 1
and edi, 0xa220c8e2
mov edx, eax
add edx, 0xd1106471
sub edx, edi
add edx, esi
mov esi, edx
shl esi, 1
xor esi, 0xffffffff
mov ebx, edx
add ebx, esi
and ebx, ecx
xor ecx, 0xffffffff
and edx, ecx
or ebx, edx
add bl, 0xcb
mov byte [esp + eax + 0x34c], bl
add eax, 1
jmp 0x410c21
lea eax, [esp + 0x34c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov ebx, eax
mov al, byte [esp + 0x10c]
mov byte [esp + 0x1dc], al
mov byte [esp + 0x344], 0x14
mov byte [esp + 0x345], 0xeb
mov eax, 2
mov byte [esp + eax + 0x344], 0
add eax, 1
cmp eax, 7
jne 0x410cad
xor eax, eax
cmp eax, 7
jae 0x410d2b
movzx edx, byte [esp + eax + 0x344]
mov edi, eax
add edi, 0x3c38c3a7
mov ecx, edx
xor ecx, 0xffffffff
mov esi, edi
and esi, ecx
mov ecx, 0x58
sub ecx, eax
and ecx, 0xfc
and edi, 3
or ecx, edi
xor ecx, 3
and ecx, edx
or ecx, esi
mov esi, ecx
and esi, 0xbc
mov edx, ecx
and edx, 0xd2e42dbc
xor edx, 0xffffffff
add ecx, 0xd2e42dbd
add ecx, edx
mov edx, ecx
add edx, esi
shl ecx, 1
and ecx, 2
xor edx, 1
add edx, ecx
mov byte [esp + eax + 0x344], dl
add eax, 1
jmp 0x410cbf
lea eax, [esp + 0x344]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x3f8], eax
mov al, byte [esp + 0x108]
mov byte [esp + 0x1e0], al
mov byte [esp + 0x33c], 0xbd
mov byte [esp + 0x33d], 0x21
mov eax, 2
mov byte [esp + eax + 0x33c], 0
add eax, 1
cmp eax, 7
jne 0x410d6c
xor eax, eax
cmp eax, 7
jae 0x410e2d
movzx esi, byte [esp + eax + 0x33c]
mov edx, eax
add edx, 0xb8
and edx, esi
mov edi, edx
and edi, 0xfd
mov ecx, edx
and ecx, 2
xor ecx, 2
imul ecx, edi
mov edi, edx
and edi, 2
or edx, 2
imul edx, edi
add edx, ecx
add esi, eax
add esi, 0x880735b8
sub esi, edx
mov ecx, esi
xor ecx, 0xa8240c98
mov edx, esi
or edx, 0x57dbf367
and edx, ecx
mov ecx, esi
and ecx, 2
xor ecx, 2
mov edi, edx
and edi, 0xfffffffd
imul edi, ecx
mov ecx, esi
and ecx, 2
or edx, 2
imul edx, ecx
add edx, edi
xor esi, 0x57dbf367
mov ecx, esi
add ecx, edx
mov edx, esi
and edx, 1
xor ecx, 1
and esi, 1
or ecx, esi
add ecx, edx
mov byte [esp + eax + 0x33c], cl
mov ecx, eax
add ecx, 0x1d
mov edx, 2
sub edx, eax
and edx, 0x1c
and ecx, 0x23
sub ecx, edx
mov eax, ecx
jmp 0x410d7e
lea eax, [esp + 0x33c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401af0
mov esi, eax
mov al, byte [esp + 0x104]
mov byte [esp + 0x1e4], al
mov byte [esp + 0x334], 0xe
mov byte [esp + 0x335], 0x89
mov eax, 2
mov byte [esp + eax + 0x334], 0
add eax, 1
cmp eax, 8
jne 0x410e69
xor eax, eax
cmp eax, 8
jae 0x410e9d
mov cl, byte [esp + eax + 0x334]
mov dl, al
add dl, 0x5e
xor dl, cl
add dl, 0x2a
mov byte [esp + eax + 0x334], dl
add eax, 1
jmp 0x410e7b
lea eax, [esp + 0x334]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov cl, byte [esp + 0x100]
mov byte [esp + 0x1e8], cl
mov byte [esp + 0x32c], 0xc4
mov byte [esp + 0x32d], 0x21
mov ecx, 2
mov byte [esp + ecx + 0x32c], 0
add ecx, 1
cmp ecx, 8
jne 0x410ed7
mov dword [esp + 0x3fc], eax
mov dword [esp + 0x2e8], esi
xor eax, eax
cmp eax, 8
jae 0x410f54
movzx edx, byte [esp + eax + 0x32c]
mov esi, eax
shl esi, 1
and esi, 0x1edfb7f0
mov ecx, eax
xor ecx, 0x8f6fdbf8
mov edi, ecx
and edi, esi
shl edi, 1
xor ecx, esi
add ecx, edi
xor ecx, edx
add ecx, 0x32d0b427
mov edx, ecx
shl edx, 1
and edx, 2
mov esi, ecx
and esi, edx
or ecx, edx
xor ecx, 1
add ecx, esi
mov byte [esp + eax + 0x32c], cl
mov ecx, eax
xor ecx, 0xfffffffe
mov edx, eax
or edx, 1
and edx, ecx
or eax, 1
add eax, edx
jmp 0x410ef7
lea eax, [esp + 0x32c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004019c0
fnstcw word [esp + 0x60]
movzx eax, word [esp + 0x60]
or eax, 0xc00
mov word [esp + 0x24c], ax
fldcw word [esp + 0x24c]
fistp dword [esp + 0x410]
fldcw word [esp + 0x60]
mov eax, dword [esp + 0x410]
mov dword [esp + 0x400], eax
mov al, byte [esp + 0xfc]
mov byte [esp + 0x1ec], al
mov byte [esp + 0x284], 0x1a
mov byte [esp + 0x285], 0x6a
mov byte [esp + 0x286], 0xe6
mov eax, 3
mov byte [esp + eax + 0x284], 0
add eax, 1
cmp eax, 5
jne 0x410fcc
xor eax, eax
cmp eax, 5
jae 0x411015
mov dl, byte [esp + eax + 0x284]
movzx esi, dl
mov ecx, eax
add ecx, 0xf99b0aa9
mov edi, eax
add edi, 0x29
and edi, esi
mov esi, ecx
and esi, edi
shl esi, 1
sub ecx, esi
add cl, dl
add cl, 0xb3
mov byte [esp + eax + 0x284], cl
add eax, 1
jmp 0x410fde
lea eax, [esp + 0x284]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004019c0
fnstcw word [esp + 0x5e]
movzx eax, word [esp + 0x5e]
or eax, 0xc00
mov word [esp + 0x24a], ax
fldcw word [esp + 0x24a]
fistp dword [esp + 0x40c]
fldcw word [esp + 0x5e]
mov eax, dword [esp + 0x40c]
mov dword [esp + 0x3f4], eax
mov dword [esp], ebx
call fcn.00414af0
mov esi, eax
add esi, 1
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411087
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], esi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040bd70
lea ecx, [esp + 0x418]
mov dword [esp], edi
call fcn.00414b50
sub esp, 4
mov ebx, dword [esp + 0x2c]
mov dword [esp], edi
call fcn.004095d0
jmp 0x4110cb
lea ecx, [esp + 0x418]
mov dword [esp], 0x1000
call fcn.0043ad10
sub esp, 4
cmp eax, 0
setge al
test al, 1
jne 0x4110f6
jmp 0x4110ed
mov edi, dword [esp + 0x28]
jmp 0x41179d
mov dword [esp + 0xf8], 0
mov eax, dword [esp + 0x418]
mov dword [esp + 0x3c8], eax
mov al, byte [esp + 0x1f0]
mov byte [esp + 0x248], al
mov byte [esp + 0x44], 0x3b
mov byte [esp + 0x45], 0x3a
mov byte [esp + 0x46], 0x3d
mov byte [esp + 0x47], 0x3c
xor eax, eax
cmp eax, 4
jae 0x411189
movzx ecx, byte [esp + eax + 0x44]
mov esi, eax
add esi, 0x6ff474a
mov edx, 0x9900b8b5
sub edx, eax
and edx, 0xee964d3b
and esi, 0x1169b2c4
mov ebx, ecx
and ebx, 0x3b
or ebx, 0x1093040
and ecx, 0xc4
xor ecx, ebx
xor ecx, 0xef9f7d7b
or edx, esi
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
add cl, 0x8e
mov byte [esp + eax + 0x44], cl
add eax, 1
jmp 0x411133
mov esi, dword [esp + 0x44]
xor edi, edi
mov ecx, 2
cmp edi, dword [0x44c008]
jb 0x4111a1
jmp 0x41122a
mov edx, dword [0x44c00c]
cmp dword [edx + edi*8], 0xfc36c0a1
sete bl
xor ecx, ecx
mov byte [esp + 0x33], bl
test bl, 1
jne 0x4111be
jmp 0x411219
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, esi
je 0x411219
mov eax, dword [0x44c010]
xor ecx, ecx
lea ecx, [esp + 0xf8]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esp + 0x3c8]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], ecx
call fcn.0043d3e0
mov ecx, 1
test byte [esp + 0x33], 1
je 0x411222
jmp 0x41122a
add edi, 1
jmp 0x41118f
cmp ecx, 2
je 0x411231
mov esi, eax
mov al, byte [esp + 0xec]
mov byte [esp + 0x1f4], al
mov byte [esp + 0xf0], 0xe0
mov byte [esp + 0xf1], 0xeb
mov byte [esp + 0xf2], 0xea
mov byte [esp + 0xf3], 0x29
mov eax, 4
mov byte [esp + eax + 0xf0], 0
add eax, 1
cmp eax, 6
jne 0x411264
xor eax, eax
cmp eax, 6
jae 0x411302
movzx edx, byte [esp + eax + 0xf0]
mov ecx, 0x63112228
sub ecx, eax
mov edi, 0x63112228
sub edi, eax
or ecx, edi
mov edi, ecx
add edi, 1
xor ecx, 0xffffffff
or ecx, 0x2f948049
add ecx, edi
mov ebx, eax
add ebx, 0x9ceeddd8
mov edi, 0x23112228
sub edi, eax
or edi, 0xd06b7fb6
add edi, ebx
mov ebx, edx
and ebx, 0x49
or ebx, 0xd0426da6
and edx, 0xb6
xor edx, ebx
or ecx, edi
mov ebx, edx
xor ebx, 0x10
mov edi, edx
xor edi, 0x10
and ebx, edi
mov edi, ecx
xor edi, 0xffffffff
or ebx, edi
xor edx, 0xef
or ecx, edx
and ebx, ecx
add bl, 0xcd
mov byte [esp + eax + 0xf0], bl
add eax, 1
jmp 0x411276
mov eax, dword [esp + 0xf0]
cmp esi, eax
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
jne 0x41179d
mov eax, dword [esp + 0xf8]
sub eax, 0xfffffffe
mov dword [esp], eax
call fcn.0043a9d0
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0xf8]
add eax, 2
mov dword [esp + 0x3d4], eax
mov eax, dword [esp + 0x418]
mov dword [esp + 0x3d0], eax
mov al, byte [esp + 0x1f8]
mov byte [esp + 0x244], al
mov byte [esp + 0x48], 0x3b
mov byte [esp + 0x49], 0x3a
mov byte [esp + 0x4a], 0x3d
mov byte [esp + 0x4b], 0x3c
xor eax, eax
cmp eax, 4
jae 0x4113cb
movzx ecx, byte [esp + eax + 0x48]
mov esi, eax
add esi, 0x6ff474a
mov edx, 0x9900b8b5
sub edx, eax
and edx, 0xee964d3b
and esi, 0x1169b2c4
mov edi, ecx
and edi, 0x3b
or edi, 0x1093040
and ecx, 0xc4
xor ecx, edi
xor ecx, 0xef9f7d7b
or edx, esi
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
add cl, 0x8e
mov byte [esp + eax + 0x48], cl
add eax, 1
jmp 0x411375
mov esi, dword [esp + 0x48]
xor edi, edi
mov ecx, 2
cmp edi, dword [0x44c008]
jb 0x4113e7
mov edi, dword [esp + 0x28]
jmp 0x411479
mov edx, dword [0x44c00c]
cmp dword [edx + edi*8], 0xfc36c0a1
sete bl
xor ecx, ecx
test bl, 1
jne 0x411400
jmp 0x41145e
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, esi
je 0x41145e
mov eax, dword [0x44c010]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esp + 0x3d0]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esp + 0x80]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x3d4]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
call fcn.0043d3e0
mov ecx, 1
test bl, 1
je 0x41146d
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
jmp 0x411479
add edi, 1
mov ebx, dword [esp + 0x2c]
jmp 0x4113d1
cmp ecx, 2
je 0x411480
mov esi, eax
cmp esi, 0
jl 0x41178a
mov ebx, dword [esp + 0x3f8]
mov dword [esp], ebx
call fcn.00414af0
mov edi, eax
mov eax, edi
and eax, 1
mov esi, edi
or esi, 1
add esi, eax
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4114be
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
xor ecx, ecx
mov dword [esp + 0x2b0], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040bd70
mov ecx, dword [esp + 0x80]
mov esi, ecx
add esi, 4
mov eax, dword [ecx + 4]
movzx ecx, word [ecx]
shr ecx, 1
sub ecx, 1
shl ecx, 1
add eax, ecx
mov ebx, eax
jmp 0x411506
cmp ebx, dword [esi]
jb 0x411521
movzx ecx, word [ebx]
cmp ecx, 0x5c
sete cl
test cl, 1
jne 0x41151a
jmp 0x41151c
jmp 0x411525
add ebx, 0xfffffffe
jmp 0x411506
mov ebx, eax
jmp 0x411525
mov eax, dword [esi]
mov ecx, ebx
xor ecx, eax
xor eax, 0xffffffff
and ebx, eax
shl ebx, 1
sub ebx, ecx
sar ebx, 1
mov ecx, ebx
and ecx, edi
mov eax, ebx
or eax, edi
add eax, ecx
sub eax, 0xffffffff
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411559
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
mov edi, eax
mov eax, dword [esi]
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
call fcn.00414b80
mov dword [esp], eax
mov eax, dword [esp + 0x2b0]
mov dword [esp + 4], eax
call fcn.0040b090
mov esi, eax
jmp 0x41158c
mov eax, dword [esp + 0x2b0]
mov dword [esp], eax
call fcn.004095d0
jmp 0x41159d
sub esi, edi
sar esi, 1
add esi, 1
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4115bc
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
mov dword [esp], edi
mov dword [esp + 0x2bc], eax
mov dword [esp + 4], eax
call fcn.00438f00
jmp 0x4115d9
mov dword [esp], edi
call fcn.004095d0
jmp 0x4115e3
mov edi, dword [esp + 0x3fc]
mov dword [esp], edi
call fcn.00414af0
mov esi, eax
mov eax, esi
and eax, 1
shl eax, 1
xor esi, 1
add esi, eax
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411618
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
xor ecx, ecx
mov dword [esp + 0x2ac], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040bd70
lea ecx, [esp + 0x560]
mov dword [esp], 1
call fcn.0040a120
sub esp, 4
xor esi, esi
mov edi, dword [esp + 0x2e8]
mov dword [esp], edi
call fcn.00402040
cmp esi, eax
jb 0x411671
jmp 0x41174a
mov dword [esp], edi
mov dword [esp + 4], esi
call fcn.00402020
mov dword [esp], eax
call fcn.004019a0
mov ebx, eax
cmp ebx, 0
jne 0x411691
jmp 0x41173b
mov dword [esp], ebx
call fcn.00414af0
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4116b6
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
mov dword [esp + 0x3bc], eax
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040bd70
lea eax, [esp + 0x560]
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x2ac]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2bc]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x3bc]
mov edi, eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x3f4]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x400]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.00421780
mov dword [esp], edi
call fcn.004095d0
jmp 0x41173b
add esi, 1
mov edi, dword [esp + 0x2e8]
jmp 0x411660
mov eax, dword [esp + 0x2ac]
mov dword [esp], eax
call fcn.004095d0
jmp 0x41175b
mov eax, dword [esp + 0x2bc]
mov dword [esp], eax
call fcn.004095d0
lea ecx, [esp + 0x560]
call fcn.0040ab80
lea ecx, [esp + 0x560]
call fcn.0040a200
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x80]
mov dword [esp], eax
call fcn.0043aa40
jmp 0x41179b
jmp 0x41179d
lea ecx, [esp + 0x418]
call fcn.00414c40
jmp 0x412af2
mov al, byte [esp + 0xe8]
mov byte [esp + 0x1fc], al
mov byte [esp + 0x324], 0xbe
mov byte [esp + 0x325], 0x39
mov eax, 2
mov byte [esp + eax + 0x324], 0
add eax, 1
cmp eax, 7
jne 0x4117d1
xor eax, eax
cmp eax, 7
jae 0x411816
mov dl, byte [esp + eax + 0x324]
xor ecx, ecx
sub ecx, eax
mov esi, ecx
shl esi, 1
and esi, 0x94
xor ecx, 0x35
add ecx, 1
sub ecx, esi
xor cl, dl
add cl, 0xf2
mov byte [esp + eax + 0x324], cl
add eax, 1
jmp 0x4117e3
mov dword [esp + 0x2c], ebx
lea eax, [esp + 0x324]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov ebx, eax
mov al, byte [esp + 0xe4]
mov byte [esp + 0x200], al
mov byte [esp + 0x31c], 0xd4
mov byte [esp + 0x31d], 0x47
mov eax, 2
mov byte [esp + eax + 0x31c], 0
add eax, 1
cmp eax, 5
jne 0x411856
xor eax, eax
cmp eax, 5
jae 0x4118a5
movzx edx, byte [esp + eax + 0x31c]
mov ecx, eax
add ecx, 0xf1
mov esi, 0xe
sub esi, eax
mov edi, 0xe
sub edi, eax
and esi, edi
or ecx, edx
xor edx, 0xffffffff
or esi, edx
and ecx, esi
add cl, 0x4b
mov byte [esp + eax + 0x31c], cl
add eax, 1
jmp 0x411868
lea eax, [esp + 0x31c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401890
test ebx, ebx
sete dl
mov dword [esp + 0x3e4], eax
test eax, eax
sete cl
or dl, cl
test dl, 1
mov edi, dword [esp + 0x28]
jne 0x4118da
jmp 0x4118e3
mov ebx, dword [esp + 0x2c]
jmp 0x412325
mov dword [esp], ebx
call fcn.00414af0
mov esi, eax
sub esi, 0xb817aca0
add esi, 1
add esi, 0xb817aca0
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411914
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
xor ecx, ecx
mov dword [esp + 0x2e4], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040bd70
mov al, byte [esp + 0xe0]
mov byte [esp + 0x204], al
mov byte [esp + 0x314], 0x1e
mov byte [esp + 0x315], 0xbb
mov eax, 2
mov byte [esp + eax + 0x314], 0
add eax, 1
cmp eax, 8
jne 0x411960
xor eax, eax
jmp 0x411974
cmp eax, 8
jae 0x4119d0
movzx ecx, byte [esp + eax + 0x314]
mov edx, eax
and edx, 0xdb48d81d
mov esi, eax
and esi, 2
xor esi, 2
mov edi, eax
and edi, 0xdb48d81d
imul edi, esi
mov esi, eax
and esi, 2
or edx, 2
imul edx, esi
add edx, edi
mov ebx, eax
xor ebx, 0xdb48d81f
add ebx, edx
xor ebx, ecx
mov ecx, ebx
shl ecx, 1
and ecx, 2
xor ebx, 1
add ebx, 0x64
add ebx, ecx
mov byte [esp + eax + 0x314], bl
add eax, 1
jmp 0x411974
lea eax, [esp + 0x314]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov edi, eax
xor ebx, ebx
cmp edi, 0
je 0x411a3b
mov dword [esp], edi
call fcn.00414af0
mov esi, eax
add esi, 1
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411a15
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
mov ebx, eax
xor eax, eax
mov dword [esp], ebx
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040bd70
jmp 0x411a3b
mov dword [esp + 0x2e0], ebx
mov esi, dword [esp + 0x3e4]
mov dword [esp], esi
call fcn.00414af0
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411a6e
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040bd70
xor eax, eax
lea eax, [esp + 0xdc]
mov dword [esp], 0
mov dword [esp + 0x78], edi
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x44c004]
sub esp, 0x18
mov cl, byte [esp + 0xd0]
mov byte [esp + 0x208], cl
mov byte [esp + 0xd4], 0x81
mov byte [esp + 0xd5], 0x6b
mov byte [esp + 0xd6], 0x6a
mov byte [esp + 0xd7], 0x29
mov ecx, 4
mov byte [esp + ecx + 0xd4], 0
add ecx, 1
cmp ecx, 6
jne 0x411afe
xor ecx, ecx
cmp ecx, 6
jae 0x411b3c
movzx esi, byte [esp + ecx + 0xd4]
mov edi, ecx
add edi, 0x17
mov edx, ecx
add edx, 0x17
and edx, esi
or edi, esi
xor edx, edi
add dl, 0x8d
mov byte [esp + ecx + 0xd4], dl
add ecx, 1
jmp 0x411b10
mov ecx, dword [esp + 0xd4]
cmp eax, ecx
mov edi, dword [esp + 0x28]
je 0x411b62
jmp 0x411b4d
mov eax, dword [esp + 0x78]
mov dword [esp], eax
call fcn.004095d0
mov ebx, dword [esp + 0x2c]
jmp 0x412325
mov eax, dword [esp + 0xdc]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411b7f
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
mov esi, eax
mov eax, dword [0x44c004]
mov ecx, dword [esp + 0xdc]
xor edx, edx
mov dword [esp], 0
mov edx, dword [esp + 0x78]
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0xdc]
mov dword [esp + 0x14], ecx
call eax
sub esp, 0x18
cmp eax, 0
setge al
mov ebx, dword [ebp + 8]
jmp 0x411bcd
test al, 1
jne 0x411bf4
jmp 0x411bd3
jmp 0x411bd5
mov eax, dword [esp + 0x78]
mov dword [esp], eax
call fcn.004095d0
mov ebx, dword [esp + 0x2c]
jmp 0x411be7
mov dword [esp], esi
call fcn.004095d0
jmp 0x412323
mov al, byte [esp + 0xcc]
mov byte [esp + 0x20c], al
mov byte [esp + 0x30c], 0x76
mov byte [esp + 0x30d], 0xeb
mov eax, 2
mov byte [esp + eax + 0x30c], 0
add eax, 1
cmp eax, 5
jne 0x411c17
mov dword [esp + 0x2dc], esi
xor eax, eax
cmp eax, 5
jae 0x411caa
movzx ecx, byte [esp + eax + 0x30c]
mov edx, eax
and edx, 0x9fb853d5
mov edi, eax
and edi, 0x9fb853d5
mov esi, eax
and esi, 2
xor esi, 2
imul esi, edi
mov edi, eax
and edi, 2
or edx, 2
imul edx, edi
add edx, esi
mov edi, eax
shl edi, 1
and edi, 0x3f70a7ae
add edi, 0x6047ac29
mov esi, eax
sub esi, edi
add esi, edx
xor esi, ecx
mov ecx, 1
sub ecx, esi
mov edx, 1
sub edx, esi
and ecx, edx
and ecx, 1
xor ecx, 1
or esi, 1
add esi, 0xcc
add ecx, esi
mov byte [esp + eax + 0x30c], cl
add eax, 1
jmp 0x411c30
lea eax, [esp + 0x30c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov edi, eax
mov dword [esp + 0x70], 0
cmp edi, 0
je 0x411d21
mov dword [esp], edi
call fcn.00414af0
xor ecx, ecx
sub ecx, eax
add ecx, 0xffffffff
xor esi, esi
sub esi, ecx
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411cfb
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
xor ecx, ecx
mov dword [esp + 0x70], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040bd70
mov al, byte [esp + 0xc8]
mov byte [esp + 0x210], al
mov byte [esp + 0x304], 0x30
mov byte [esp + 0x305], 0x89
mov eax, 2
mov byte [esp + eax + 0x304], 0
add eax, 1
cmp eax, 6
jne 0x411d44
xor eax, eax
mov edi, dword [esp + 0x28]
cmp eax, 6
jae 0x411d7c
mov cl, byte [esp + eax + 0x304]
mov dl, 0x9d
sub dl, al
xor dl, cl
mov cl, 0x15
sub cl, dl
mov byte [esp + eax + 0x304], cl
add eax, 1
jmp 0x411d5a
lea eax, [esp + 0x304]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401c20
cmp eax, 0
setne al
and al, 1
mov byte [esp + 0x37], al
mov al, byte [esp + 0xc4]
mov byte [esp + 0x214], al
mov byte [esp + 0x27c], 0x3b
mov byte [esp + 0x27d], 0x17
mov byte [esp + 0x27e], 0x9e
mov eax, 3
mov byte [esp + eax + 0x27c], 0
add eax, 1
cmp eax, 8
jne 0x411dca
xor eax, eax
cmp eax, 8
jae 0x411e26
movzx esi, byte [esp + eax + 0x27c]
mov ecx, eax
add ecx, 0xf105825
mov edx, 0xda
sub edx, eax
and edx, esi
mov ebx, ecx
xor ebx, esi
add ebx, esi
mov edi, esi
add edi, 1
xor esi, 0xffffffff
or ecx, esi
add ecx, edi
mov edi, dword [esp + 0x28]
add edx, ecx
sub ebx, edx
add bl, 0x47
mov byte [esp + eax + 0x27c], bl
mov ebx, dword [ebp + 8]
add eax, 1
jmp 0x411ddc
lea eax, [esp + 0x27c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401af0
mov ecx, eax
xor esi, esi
cmp ecx, 0
mov eax, 0
mov ebx, dword [esp + 0x2c]
je 0x4121ed
mov dword [esp + 0x2cc], ecx
mov dword [esp], ecx
call fcn.00402040
mov esi, eax
mov ecx, 0xc
mov eax, esi
mul ecx
seto dl
add eax, 4
setb cl
or dl, cl
mov ecx, 0xffffffff
test dl, 1
jne 0x411e80
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
mov dword [eax], esi
add eax, 4
cmp esi, 0
mov dword [esp + 0x38], eax
mov dword [esp + 0x6c], esi
je 0x411ec1
imul ecx, esi, 0xc
mov edi, eax
add edi, ecx
mov esi, eax
jmp 0x411ea5
mov ecx, esi
call fcn.00414c50
add esi, 0xc
cmp esi, edi
jne 0x411ea5
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x6c]
jmp 0x411ec1
xor edx, edx
mov ecx, dword [esp + 0x2cc]
jmp 0x411ecc
cmp edx, esi
jb 0x411ed5
jmp 0x4121ed
mov dword [esp], ecx
mov dword [esp + 0x2c4], edx
mov dword [esp + 4], edx
call fcn.00402050
mov dword [esp + 0x68], eax
mov al, byte [esp + 0xc0]
mov byte [esp + 0x218], al
mov byte [esp + 0x274], 0xc5
mov byte [esp + 0x275], 0xbf
mov byte [esp + 0x276], 0x22
mov eax, 3
mov byte [esp + eax + 0x274], 0
add eax, 1
cmp eax, 7
jne 0x411f17
xor eax, eax
cmp eax, 7
jae 0x411f6d
mov dl, byte [esp + eax + 0x274]
mov ecx, eax
add ecx, 0xf8
mov esi, eax
add esi, 0xf8
and ecx, esi
and ecx, 0xfe
mov esi, 1
sub esi, eax
and esi, 1
or ecx, esi
xor cl, dl
xor cl, 1
add cl, 0x28
mov byte [esp + eax + 0x274], cl
add eax, 1
jmp 0x411f29
lea eax, [esp + 0x274]
mov ecx, dword [esp + 0x68]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x3dc], eax
mov al, byte [esp + 0xbc]
mov byte [esp + 0x21c], al
mov byte [esp + 0x26c], 0xe5
mov byte [esp + 0x26d], 0xdb
mov byte [esp + 0x26e], 0x42
mov eax, 3
mov byte [esp + eax + 0x26c], 0
add eax, 1
cmp eax, 7
jne 0x411fb6
xor eax, eax
cmp eax, 7
jae 0x412002
movzx edx, byte [esp + eax + 0x26c]
mov ecx, eax
add ecx, 0x70
mov esi, 0x8f
sub esi, eax
and esi, edx
xor edx, 0xffffffff
and ecx, edx
or ecx, esi
add cl, 0xd0
mov byte [esp + eax + 0x26c], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x411fc8
lea eax, [esp + 0x26c]
mov ecx, dword [esp + 0x68]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x3d8], eax
mov al, byte [esp + 0xb8]
mov byte [esp + 0x220], al
mov byte [esp + 0x3c], 0x40
mov byte [esp + 0x3d], 0x5b
mov byte [esp + 0x3e], 0x5c
mov byte [esp + 0x3f], 0xf1
xor eax, eax
cmp eax, 4
jae 0x412060
mov cl, byte [esp + eax + 0x3c]
mov dl, al
add dl, 0x55
xor dl, cl
add dl, 0x57
mov byte [esp + eax + 0x3c], dl
add eax, 1
jmp 0x412044
lea eax, [esp + 0x3c]
mov ecx, dword [esp + 0x68]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401c20
cmp eax, 0
setg byte [esp + 0x34]
mov al, byte [esp + 0xac]
mov byte [esp + 0x224], al
mov byte [esp + 0xb0], 0xe3
mov byte [esp + 0xb1], 0xec
mov byte [esp + 0xb2], 0xe1
mov byte [esp + 0xb3], 0x93
mov eax, 4
mov byte [esp + eax + 0xb0], 0
add eax, 1
cmp eax, 8
jne 0x4120af
xor esi, esi
cmp esi, 8
jae 0x412167
movzx ecx, byte [esp + esi + 0xb0]
mov dword [esp + 0x3c0], ecx
mov eax, 0x63
sub eax, esi
or eax, ecx
mov dword [esp + 0x3c4], eax
mov edi, 0x63
sub edi, esi
mov edx, 0x63
sub edx, esi
mov eax, esi
add eax, 0x406d599c
mov ecx, esi
add ecx, 0x406d599c
mov dword [esp + 0x2a8], ecx
mov ebx, eax
and ebx, 0xe
and edi, 0xf1
mov ecx, dword [esp + 0x2a8]
and ecx, 0xe
and edx, 0xf1
or ebx, edi
mov edi, dword [esp + 0x28]
or ecx, edx
xor ebx, ecx
or eax, dword [esp + 0x2a8]
xor eax, 0xffffffff
or ebx, eax
and ebx, dword [esp + 0x3c0]
mov eax, dword [esp + 0x3c4]
xor eax, 0xffffffff
or ebx, eax
add bl, 0xf4
mov byte [esp + esi + 0xb0], bl
mov ebx, dword [esp + 0x2c]
add esi, 1
jmp 0x4120c1
lea eax, [esp + 0xb0]
mov ecx, dword [esp + 0x68]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401c20
xor edx, edx
cmp eax, 0
setg al
mov ecx, dword [esp + 0x38]
imul esi, dword [esp + 0x2c4], 0xc
add ecx, esi
mov esi, dword [esp + 0x3dc]
mov dword [esp + 4], esi
mov esi, dword [esp + 0x3d8]
mov dword [esp], esi
mov dl, al
and edx, 1
mov dword [esp + 0xc], edx
xor eax, eax
mov dl, byte [esp + 0x34]
mov al, dl
and eax, 1
mov dword [esp + 8], eax
call fcn.00414c70
sub esp, 0x10
xor eax, eax
sub eax, dword [esp + 0x2c4]
add eax, 0xffffffff
xor edx, edx
sub edx, eax
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x6c]
mov ecx, dword [esp + 0x2cc]
jmp 0x411ecc
mov dword [esp + 0x6c], esi
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x2e4]
mov dword [esp + 0x43c], eax
mov eax, dword [esp + 0x2e0]
mov dword [esp + 0x440], eax
mov eax, dword [esp + 0x2dc]
mov dword [esp + 0x444], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x448], eax
mov al, byte [esp + 0x37]
mov byte [esp + 0x44c], al
lea ecx, [esp + 0x4d8]
mov dword [esp], 2
call fcn.0040a120
sub esp, 4
lea eax, [esp + 0x4d8]
lea ecx, [esp + 0x43c]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov esi, dword [esp + 0x38]
mov dword [esp + 8], esi
mov eax, dword [esp + 0x6c]
mov dword [esp + 0xc], eax
call fcn.004153b0
lea ecx, [esp + 0x4d8]
call fcn.0040ab80
mov ecx, esi
cmp ecx, 0
sete al
test al, 1
jne 0x4122c7
jmp 0x41228f
mov ebx, ecx
add ebx, 0xfffffffc
imul eax, dword [ecx - 4], 0xc
mov esi, ecx
add esi, eax
cmp ecx, esi
sete al
test al, 1
jne 0x4122bb
jmp 0x4122a7
jmp 0x4122a9
add esi, 0xfffffff4
mov ecx, esi
call fcn.00414dd0
cmp esi, dword [esp + 0x38]
jne 0x4122a9
jmp 0x4122bb
mov dword [esp], ebx
call fcn.004095d0
mov ebx, dword [esp + 0x2c]
jmp 0x4122c9
mov eax, dword [esp + 0x2e4]
mov dword [esp], eax
call fcn.004095d0
jmp 0x4122da
mov eax, dword [esp + 0x2dc]
mov dword [esp], eax
call fcn.004095d0
mov eax, dword [esp + 0x2e0]
cmp eax, 0
je 0x4122fd
mov dword [esp], eax
call fcn.004095d0
cmp dword [esp + 0x70], 0
sete al
test al, 1
jne 0x412317
jmp 0x41230b
mov eax, dword [esp + 0x70]
mov dword [esp], eax
call fcn.004095d0
lea ecx, [esp + 0x4d8]
call fcn.0040a200
jmp 0x412325
jmp 0x412af2
mov al, byte [esp + 0xa8]
mov byte [esp + 0x228], al
mov byte [esp + 0x2fc], 0x6e
mov byte [esp + 0x2fd], 0xe7
mov eax, 2
mov byte [esp + eax + 0x2fc], 0
add eax, 1
cmp eax, 7
jne 0x41234d
xor eax, eax
cmp eax, 7
jae 0x412381
mov cl, byte [esp + eax + 0x2fc]
mov dl, al
add dl, 0x29
xor dl, cl
add dl, 0x33
mov byte [esp + eax + 0x2fc], dl
add eax, 1
jmp 0x41235f
mov dword [esp + 0x2c], ebx
lea eax, [esp + 0x2fc]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov ebx, eax
mov al, byte [esp + 0xa4]
mov byte [esp + 0x22c], al
mov byte [esp + 0x2f4], 0xf8
mov byte [esp + 0x2f5], 0x49
mov eax, 2
mov byte [esp + eax + 0x2f4], 0
add eax, 1
cmp eax, 6
jne 0x4123c1
xor eax, eax
cmp eax, 6
jae 0x41240d
mov dl, byte [esp + eax + 0x2f4]
mov esi, eax
xor esi, 0x92
mov ecx, eax
shl ecx, 1
and ecx, 0xda
sub ecx, esi
xor cl, dl
add cl, 0xda
mov byte [esp + eax + 0x2f4], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x4123d3
lea eax, [esp + 0x2f4]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401890
mov edi, eax
test ebx, ebx
sete al
test edi, edi
sete cl
or al, cl
test al, 1
jne 0x412438
jmp 0x412445
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
jmp 0x412af0
mov dword [esp], ebx
call fcn.00414af0
mov esi, eax
mov eax, esi
and eax, 1
shl eax, 1
xor esi, 1
add esi, eax
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412473
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
xor ecx, ecx
mov dword [esp + 0x2d8], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040bd70
mov dword [esp], edi
call fcn.00414af0
mov ebx, eax
and ebx, 1
or eax, 1
add ebx, eax
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4124c6
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
mov esi, eax
xor eax, eax
mov dword [esp], esi
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040bd70
xor eax, eax
lea eax, [esp + 0xa0]
mov dword [esp], 0
mov dword [esp + 0x74], esi
mov dword [esp + 4], esi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x44c004]
sub esp, 0x18
mov cl, byte [esp + 0x94]
mov byte [esp + 0x230], cl
mov byte [esp + 0x98], 0x13
mov byte [esp + 0x99], 0x31
mov byte [esp + 0x9a], 0x32
mov byte [esp + 0x9b], 0xf3
mov ecx, 4
mov byte [esp + ecx + 0x98], 0
add ecx, 1
cmp ecx, 6
jne 0x412556
xor ecx, ecx
cmp ecx, 6
jae 0x4125a2
movzx esi, byte [esp + ecx + 0x98]
mov edi, ecx
shl edi, 1
and edi, 0x5e5d1168
mov edx, ecx
xor edx, 0xaf2e88b4
add edx, edi
mov edi, edx
and edi, esi
add edx, esi
shl edi, 1
sub edx, edi
add dl, 0x7c
mov byte [esp + ecx + 0x98], dl
add ecx, 1
jmp 0x412568
mov ecx, dword [esp + 0x98]
cmp eax, ecx
mov edi, dword [esp + 0x28]
je 0x4125ca
jmp 0x4125b3
mov eax, dword [esp + 0x74]
mov dword [esp], eax
call fcn.004095d0
mov ebx, dword [esp + 0x2c]
jmp 0x4125c5
jmp 0x412af0
mov eax, dword [esp + 0xa0]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4125e7
mov ecx, eax
mov dword [esp], ecx
call fcn.004095c0
mov esi, dword [0x44c004]
mov ecx, dword [esp + 0xa0]
xor edx, edx
mov dword [esp], 0
mov edx, dword [esp + 0x74]
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
mov dword [esp + 0x7c], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [esp + 0xa0]
mov dword [esp + 0x14], eax
call esi
sub esp, 0x18
cmp eax, 0
jge 0x412657
mov ebx, dword [esp + 0x2c]
jmp 0x412638
mov eax, dword [esp + 0x74]
mov dword [esp], eax
call fcn.004095d0
jmp 0x412646
mov eax, dword [esp + 0x7c]
mov dword [esp], eax
call fcn.004095d0
jmp 0x412aee
mov al, byte [esp + 0x90]
mov byte [esp + 0x234], al
mov byte [esp + 0x2ec], 0xa0
mov byte [esp + 0x2ed], 0xc9
mov eax, 2
mov edi, dword [ebp + 8]
mov byte [esp + eax + 0x2ec], 0
add eax, 1
cmp eax, 7
jne 0x41267d
xor eax, eax
cmp eax, 7
jae 0x4126bd
mov dl, byte [esp + eax + 0x2ec]
mov esi, eax
shl esi, 1
and esi, 0x9c
mov ecx, eax
xor ecx, 0x4e
add ecx, esi
xor cl, dl
add cl, 0x7a
mov byte [esp + eax + 0x2ec], cl
add eax, 1
jmp 0x41268f
lea eax, [esp + 0x2ec]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401c20
cmp eax, 0
setne al
and al, 1
mov byte [esp + 0x36], al
mov al, byte [esp + 0x8c]
mov byte [esp + 0x238], al
mov byte [esp + 0x264], 0x13
mov byte [esp + 0x265], 0x6f
mov byte [esp + 0x266], 0xe6
mov eax, 3
mov byte [esp + eax + 0x264], 0
add eax, 1
cmp eax, 8
jne 0x41270b
xor eax, eax
cmp eax, 8
jae 0x412771
movzx edx, byte [esp + eax + 0x264]
mov ecx, eax
add ecx, 0x40be4a9
xor ecx, edx
mov esi, ecx
shl esi, 1
and esi, 0xd7891164
mov edx, ecx
xor edx, 0xebc488b2
add edx, esi
mov esi, edx
shl esi, 1
and esi, 0xe0
xor edx, 0xf0
add edx, esi
and ecx, 1
or edx, 1
add ecx, edx
add cl, 0x10
mov byte [esp + eax + 0x264], cl
add eax, 1
jmp 0x41271d
lea eax, [esp + 0x264]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401af0
xor esi, esi
cmp eax, 0
mov ebx, 0
mov edi, dword [esp + 0x28]
je 0x412a02
mov dword [esp + 0x3e8], eax
mov dword [esp], eax
call fcn.00402040
mov ebx, eax
mov ecx, 8
mov eax, ebx
mul ecx
seto dl
add eax, 4
setb ch
mov cl, dl
and cl, ch
xor dl, ch
or cl, dl
mov edx, 0xffffffff
test cl, 1
jne 0x4127cf
mov edx, eax
mov dword [esp], edx
call fcn.004095c0
mov esi, eax
mov dword [esi], ebx
add esi, 4
cmp ebx, 0
mov dword [esp + 0x4c], esi
je 0x412808
mov eax, ebx
shl eax, 3
mov edi, esi
add edi, eax
mov ecx, esi
call fcn.00414e00
add esi, 8
cmp esi, edi
jne 0x4127f0
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x4c]
jmp 0x412808
xor ecx, ecx
jmp 0x41280c
cmp ecx, ebx
mov eax, dword [esp + 0x3e8]
jb 0x41281c
jmp 0x412a02
mov dword [esp + 0x3e0], ebx
mov dword [esp], eax
mov ebx, ecx
mov dword [esp + 4], ecx
call fcn.00402050
mov dword [esp + 0x2b8], eax
mov al, byte [esp + 0x88]
mov byte [esp + 0x23c], al
mov byte [esp + 0x25c], 0x7d
mov byte [esp + 0x25d], 0x6b
mov byte [esp + 0x25e], 0x9e
mov eax, 3
mov byte [esp + eax + 0x25c], 0
add eax, 1
cmp eax, 8
jne 0x412863
xor esi, esi
cmp esi, 8
jae 0x412914
movzx edx, byte [esp + esi + 0x25c]
mov eax, edx
shl eax, 1
xor eax, 0xffffffff
add eax, edx
mov ecx, edx
and ecx, 0xa0
and eax, 0x5f
or ecx, eax
xor ecx, edx
mov eax, 0x23325825
sub eax, esi
mov edi, 0x23325825
sub edi, esi
and eax, edi
xor ecx, 0xa0
and ecx, edx
or ecx, eax
xor edx, 0xffffffff
mov eax, esi
add eax, 0xda
mov edi, esi
add edi, 0xda
or eax, edi
or eax, edx
mov edx, ecx
xor edx, 0xffffffff
mov edi, eax
and edi, edx
xor eax, ecx
xor ecx, 0xffffffff
add eax, ecx
sub eax, edi
mov edi, dword [esp + 0x28]
mov ecx, eax
and ecx, 0x50044743
xor ecx, 0x50044743
and eax, 0xaffbb8bc
sub eax, ecx
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [esp + esi + 0x25c], al
add esi, 1
jmp 0x412875
lea eax, [esp + 0x25c]
mov ecx, dword [esp + 0x2b8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x3cc], eax
mov al, byte [esp + 0x84]
mov byte [esp + 0x240], al
mov byte [esp + 0x254], 0x25
mov byte [esp + 0x255], 0x3b
mov byte [esp + 0x256], 0x82
mov eax, 3
mov byte [esp + eax + 0x254], 0
add eax, 1
cmp eax, 8
jne 0x412960
xor eax, eax
mov esi, dword [esp + 0x4c]
cmp eax, 8
jae 0x4129b8
mov dl, byte [esp + eax + 0x254]
mov esi, 0x1f
sub esi, eax
and esi, 0xde
mov ecx, eax
and ecx, 0x21
or ecx, esi
mov esi, dword [esp + 0x4c]
xor cl, dl
xor cl, 1
mov dl, 0x9f
sub dl, cl
mov byte [esp + eax + 0x254], dl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x412976
lea eax, [esp + 0x254]
mov ecx, dword [esp + 0x2b8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov edx, ebx
shl edx, 3
mov ecx, esi
add ecx, edx
mov dword [esp], eax
mov eax, dword [esp + 0x3cc]
mov dword [esp + 4], eax
call fcn.00414e10
sub esp, 8
mov ecx, ebx
add ecx, 1
mov ebx, dword [esp + 0x3e0]
jmp 0x41280c
mov eax, dword [esp + 0x2d8]
mov dword [esp + 0x428], eax
mov dword [esp + 0x42c], 0
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x430], eax
mov dword [esp + 0x434], 0
mov al, byte [esp + 0x36]
mov byte [esp + 0x438], al
lea ecx, [esp + 0x450]
mov dword [esp], 3
call fcn.0040a120
sub esp, 4
lea eax, [esp + 0x450]
lea ecx, [esp + 0x428]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], esi
mov dword [esp + 0xc], ebx
call fcn.0041f510
lea ecx, [esp + 0x450]
call fcn.0040ab80
cmp esi, 0
je 0x412abb
mov ebx, esi
add ebx, 0xfffffffc
mov eax, dword [ebx]
shl eax, 3
mov ecx, esi
mov esi, ecx
add esi, eax
mov eax, ecx
cmp ecx, esi
je 0x412ab3
mov dword [esp + 0x4c], eax
jmp 0x412aa1
add esi, 0xfffffff8
mov ecx, esi
call fcn.00414ec0
cmp esi, dword [esp + 0x4c]
jne 0x412aa1
jmp 0x412ab3
mov dword [esp], ebx
call fcn.004095d0
jmp 0x412abd
mov eax, dword [esp + 0x7c]
mov dword [esp], eax
call fcn.004095d0
mov ebx, dword [esp + 0x2c]
jmp 0x412acf
jmp 0x412ad1
mov eax, dword [esp + 0x2d8]
mov dword [esp], eax
call fcn.004095d0
jmp 0x412ae2
lea ecx, [esp + 0x450]
call fcn.0040a200
jmp 0x412af0
jmp 0x412af2
jmp 0x412af4
add edi, 1
jmp 0x40fb61
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret