Function at 0x40ed20
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xd70
push 2
push 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
shr eax, 0x1f
mov eax, dword [eax*4 + 0x440248]
mov ecx, dword [0x440250]
mov edx, ecx
and edx, 0xdad6977c
add edx, edx
sub edx, ecx
add eax, edx
add eax, 0x25296884
jmp eax
mov dword [esp], edi
call fcn.00402030
cmp esi, eax
jb 0x40eb45
mov al, 1
jmp 0x41183b
mov dword [esp], edi
mov dword [esp + 4], esi
call fcn.00402040
mov dword [esp + 0x24], eax
mov al, byte [esp + 0x14c]
mov byte [esp + 0x158], al
mov byte [esp + 0x350], 0x90
mov byte [esp + 0x351], 0x2b
mov eax, 2
mov byte [esp + eax + 0x350], 0
add eax, 1
cmp eax, 8
jne 0x40eb78
mov dword [esp + 0x20], esi
mov dword [esp + 0x28], edi
xor eax, eax
cmp eax, 8
jae 0x40ebf2
movzx edx, byte [esp + eax + 0x350]
xor ecx, ecx
sub ecx, eax
mov esi, ecx
shl esi, 1
and esi, 0x57774c72
xor ecx, 0xd44459c6
add ecx, 1
sub ecx, esi
mov edi, ecx
shl edi, 1
xor edi, 0xffffffff
mov esi, ecx
add esi, edi
and esi, edx
xor edx, 0xffffffff
and ecx, edx
or esi, ecx
add esi, 0xdaaa3f1c
mov edx, esi
xor edx, 0xfe
mov ecx, esi
or ecx, 1
and ecx, edx
or esi, 1
add ecx, esi
mov byte [esp + eax + 0x350], cl
add eax, 1
jmp 0x40eb92
lea eax, [esp + 0x350]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401f10
cmp eax, 0
setne al
xor al, 0xff
test al, 1
mov esi, dword [esp + 0x20]
jne 0x40ec23
jmp 0x40ec2c
mov edi, dword [esp + 0x28]
jmp 0x411833
mov al, byte [esp + 0x148]
mov byte [esp + 0x15c], al
mov byte [esp + 0x348], 0x8c
mov byte [esp + 0x349], 0x11
mov eax, 2
mov byte [esp + eax + 0x348], 0
add eax, 1
cmp eax, 6
jne 0x40ec4f
xor eax, eax
cmp eax, 6
jae 0x40ecbe
movzx edi, byte [esp + eax + 0x348]
mov esi, eax
add esi, 0x2268a844
mov ecx, edi
xor ecx, 0x46
mov edx, edi
or edx, 0xb9
and edx, ecx
mov ecx, 0x5d9757bb
sub ecx, eax
and ecx, 0x7c413e46
and esi, 0x83bec1b9
and edi, 0x46
xor edi, 0x7c413e46
or edx, edi
or ecx, esi
mov esi, ecx
and esi, edx
shl esi, 1
sub ecx, esi
add ecx, edx
add cl, 0xac
mov byte [esp + eax + 0x348], cl
add eax, 1
jmp 0x40ec61
lea eax, [esp + 0x348]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004019b0
fnstcw word [esp + 0x5a]
movzx eax, word [esp + 0x5a]
or eax, 0xc00
mov word [esp + 0x226], ax
fldcw word [esp + 0x226]
fistp dword [esp + 0x3b8]
fldcw word [esp + 0x5a]
mov eax, dword [esp + 0x3b8]
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
mov ecx, eax
sub ecx, 3
ja 0x411831
mov eax, dword [eax*4 + 0x43d2bc]
jmp eax
mov al, byte [esp + 0x144]
mov byte [esp + 0x160], al
mov byte [esp + 0x340], 0x30
mov byte [esp + 0x341], 0x81
mov eax, 2
mov byte [esp + eax + 0x340], 0
add eax, 1
cmp eax, 8
jne 0x40ed43
xor eax, eax
cmp eax, 8
jae 0x40ed87
movzx edx, byte [esp + eax + 0x340]
mov ecx, eax
add ecx, 0xe8c786e0
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
mov esi, dword [esp + 0x20]
add cl, 0xa0
mov byte [esp + eax + 0x340], cl
add eax, 1
jmp 0x40ed55
lea eax, [esp + 0x340]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f10
cmp eax, 0
setne al
test al, 1
jne 0x40edb5
jmp 0x40f0cc
mov al, byte [esp + 0x138]
mov byte [esp + 0x164], al
mov byte [esp + 0x13c], 0x37
mov byte [esp + 0x13d], 0xcb
mov byte [esp + 0x13e], 0xca
mov byte [esp + 0x13f], 0xc9
mov eax, 4
mov byte [esp + eax + 0x13c], 0
add eax, 1
cmp eax, 8
jne 0x40ede8
xor eax, eax
cmp eax, 8
jae 0x40ee3c
movzx edx, byte [esp + eax + 0x13c]
mov ecx, eax
add ecx, 1
mov esi, eax
xor esi, 0xffffffff
or esi, 0x59ff4133
mov edi, eax
or edi, 0x59ff4133
add esi, edi
add ecx, esi
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
add cl, 1
mov byte [esp + eax + 0x13c], cl
add eax, 1
jmp 0x40edfa
mov eax, dword [esp + 0x13c]
mov cl, byte [esp + 0x134]
mov byte [esp + 0x168], cl
mov byte [esp + 0x338], 0xaf
mov byte [esp + 0x339], 0x3b
mov ecx, 2
mov byte [esp + ecx + 0x338], 0
add ecx, 1
cmp ecx, 7
jne 0x40ee66
xor ecx, ecx
mov edi, dword [esp + 0x28]
cmp ecx, 7
jae 0x40eebe
movzx esi, byte [esp + ecx + 0x338]
mov edx, ecx
add edx, 0x5786c34b
xor edx, esi
mov esi, edx
xor esi, 0x78
shl edx, 1
and edx, 0xe
sub edx, esi
add dl, 1
mov byte [esp + ecx + 0x338], dl
mov edx, ecx
and edx, 5
or ecx, 0x325e9fc5
add ecx, edx
add ecx, 0xcda1603c
jmp 0x40ee7c
lea ecx, [esp + 0x338]
mov edx, dword [esp + 0x24]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.00401f10
cmp eax, 0
mov esi, dword [esp + 0x20]
je 0x40f0cc
mov al, byte [esp + 0x130]
mov byte [esp + 0x16c], al
mov byte [esp + 0x330], 0x96
mov byte [esp + 0x331], 0x1f
mov eax, 2
mov byte [esp + eax + 0x330], 0
add eax, 1
cmp eax, 8
jne 0x40ef09
xor eax, eax
cmp eax, 8
jae 0x40ef49
movzx edx, byte [esp + eax + 0x330]
mov ecx, eax
add ecx, 0x4047f685
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
add cl, 0x67
mov byte [esp + eax + 0x330], cl
add eax, 1
jmp 0x40ef1b
lea eax, [esp + 0x330]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f10
cmp eax, 0
mov esi, dword [esp + 0x20]
je 0x40f0cc
mov al, byte [esp + 0x12c]
mov byte [esp + 0x170], al
mov byte [esp + 0x328], 0x3c
mov byte [esp + 0x329], 0x91
mov eax, 2
mov byte [esp + eax + 0x328], 0
add eax, 1
cmp eax, 6
jne 0x40ef98
xor eax, eax
cmp eax, 6
jae 0x40efe3
movzx edx, byte [esp + eax + 0x328]
mov ecx, eax
add ecx, 0xd65db264
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
mov edx, ecx
xor edx, esi
xor esi, 0xffffffff
and ecx, esi
shl ecx, 1
sub ecx, edx
add cl, 0xc
mov byte [esp + eax + 0x328], cl
add eax, 1
jmp 0x40efaa
lea eax, [esp + 0x328]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401f10
cmp eax, 0
mov esi, dword [esp + 0x20]
je 0x40f0cc
mov al, byte [esp + 0x128]
mov byte [esp + 0x174], al
mov byte [esp + 0x3c], 0x2a
mov byte [esp + 0x3d], 0x3a
mov byte [esp + 0x3e], 0x86
mov eax, 3
mov byte [esp + eax + 0x3c], 0
add eax, 1
cmp eax, 4
jne 0x40f031
xor eax, eax
cmp eax, 4
jae 0x40f096
movzx ecx, byte [esp + eax + 0x3c]
mov esi, eax
add esi, 0x78d0d9a7
mov edx, esi
shl edx, 1
and edx, 0x3142
xor esi, 0x18a1
add esi, edx
mov edi, esi
add edi, 0x59
mov edx, 0xa6
sub edx, esi
and edx, ecx
xor ecx, 0xffffffff
and edi, ecx
or edx, edi
add dl, 0xdb
mov byte [esp + eax + 0x3c], dl
mov ecx, eax
shl ecx, 1
and ecx, 2
mov edx, eax
and edx, ecx
shl edx, 1
xor eax, ecx
or eax, edx
xor eax, 1
jmp 0x40f040
lea eax, [esp + 0x3c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401f10
cmp eax, 0
setne al
xor al, 0xff
test al, 1
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
jne 0x411831
jmp 0x40f0d7
jmp 0x40f0ce
jmp 0x40f0d0
jmp 0x40f0d2
jmp 0x411831
mov al, byte [esp + 0x124]
mov byte [esp + 0x178], al
mov byte [esp + 0x4c], 0x38
mov byte [esp + 0x4d], 0x89
mov eax, 2
mov byte [esp + eax + 0x4c], 0
add eax, 1
cmp eax, 4
jne 0x40f0f4
xor eax, eax
cmp eax, 4
jae 0x40f156
mov cl, byte [esp + eax + 0x4c]
mov edx, eax
and edx, 0xa0
mov esi, eax
and esi, 2
xor esi, 2
mov edi, eax
and edi, 0xa0
imul esi, edi
mov edi, eax
and edi, 2
or edx, 2
imul edx, edi
add edx, esi
mov esi, eax
shl esi, 1
and esi, 0x44
add esi, 0x5e
mov edi, ebx
mov ebx, eax
sub ebx, esi
add ebx, edx
xor bl, cl
add bl, 0xd6
mov byte [esp + eax + 0x4c], bl
mov ebx, edi
add eax, 1
jmp 0x40f103
lea eax, [esp + 0x4c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x28c], eax
mov al, byte [esp + 0x120]
mov byte [esp + 0x17c], al
mov byte [esp + 0x320], 0x17
mov byte [esp + 0x321], 0x6b
mov eax, 2
mov byte [esp + eax + 0x320], 0
add eax, 1
cmp eax, 6
jne 0x40f194
xor eax, eax
cmp eax, 6
jae 0x40f1d9
mov cl, byte [esp + eax + 0x320]
mov dl, al
add dl, 0x67
xor dl, cl
add dl, 0xfd
mov byte [esp + eax + 0x320], dl
mov ecx, eax
and ecx, 1
mov edx, eax
and edx, 1
xor edx, 0xffffffff
add eax, 2
add eax, edx
add eax, ecx
jmp 0x40f1a6
lea eax, [esp + 0x320]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401ae0
mov dword [esp + 0x78], eax
mov al, byte [esp + 0x11c]
mov byte [esp + 0x180], al
mov byte [esp + 0x318], 0xea
mov byte [esp + 0x319], 0x61
mov eax, 2
mov byte [esp + eax + 0x318], 0
add eax, 1
cmp eax, 6
jne 0x40f217
xor eax, eax
cmp eax, 6
jae 0x40f2cd
movzx esi, byte [esp + eax + 0x318]
mov ecx, eax
add ecx, 0x1290663c
mov edx, 0x2d6f99c3
sub edx, eax
and edx, 0xec3dbbd4
and ecx, 0x13c2442b
sub ecx, edx
mov edi, esi
and edi, 0xeb
mov edx, ecx
and edx, 0xedb1ad14
xor edx, 0xedb1ad14
mov ebx, ecx
and ebx, 0xedb1ad14
xor ebx, 0xedb1ad14
or edx, ebx
and ecx, 0x124e52eb
mov ebx, esi
xor ebx, 0xeb
or esi, 0x124e52eb
xor edi, esi
or ebx, edi
or edx, ecx
xor edx, ebx
mov ecx, 0xf6
sub ecx, edx
mov ebx, edx
add ebx, 9
or ebx, 1
sub ebx, edx
or ecx, 1
add ebx, 0xf7
add ebx, ecx
mov byte [esp + eax + 0x318], bl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40f229
lea eax, [esp + 0x318]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov edi, eax
mov al, byte [esp + 0x118]
mov byte [esp + 0x184], al
mov byte [esp + 0x310], 0x84
mov byte [esp + 0x311], 0x19
mov eax, 2
mov byte [esp + eax + 0x310], 0
add eax, 1
cmp eax, 7
jne 0x40f309
xor eax, eax
cmp eax, 7
jae 0x40f35d
movzx esi, byte [esp + eax + 0x310]
mov edx, 0xcfe29b39
sub edx, eax
or edx, esi
mov ecx, 0x39
sub ecx, eax
and ecx, esi
xor edx, 0xffffffff
or ecx, edx
add ecx, 0xf6d0821
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x310], cl
add eax, 1
jmp 0x40f31b
lea eax, [esp + 0x310]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004019b0
fnstcw word [esp + 0x58]
movzx eax, word [esp + 0x58]
or eax, 0xc00
mov word [esp + 0x224], ax
fldcw word [esp + 0x224]
fistp dword [esp + 0x3ac]
fldcw word [esp + 0x58]
mov eax, dword [esp + 0x3ac]
mov dword [esp + 0x394], eax
mov al, byte [esp + 0x114]
mov byte [esp + 0x188], al
mov byte [esp + 0x258], 0x3e
mov byte [esp + 0x259], 2
mov byte [esp + 0x25a], 0x92
mov eax, 3
mov byte [esp + eax + 0x258], 0
add eax, 1
cmp eax, 7
jne 0x40f3d5
mov dword [esp + 0x390], edi
xor eax, eax
cmp eax, 7
jae 0x40f469
movzx edx, byte [esp + eax + 0x258]
mov ecx, eax
add ecx, 0x2510c9a4
mov esi, eax
add esi, 0xa4
and esi, edx
mov ebx, esi
and ebx, 0xfd
mov edi, esi
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, esi
and ebx, 2
or esi, 2
imul esi, ebx
add esi, edi
add ecx, edx
sub ecx, esi
add ecx, 0x46ac0fcb
mov edx, ecx
and edx, 1
mov esi, ecx
and esi, 0xfe
xor esi, 0xfe
and ecx, 0xfe
xor ecx, 0xfe
or esi, ecx
xor esi, 0xffffffff
add edx, esi
mov byte [esp + eax + 0x258], dl
add eax, 1
jmp 0x40f3ee
lea eax, [esp + 0x258]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004019b0
fnstcw word [esp + 0x56]
movzx eax, word [esp + 0x56]
or eax, 0xc00
mov word [esp + 0x222], ax
fldcw word [esp + 0x222]
fistp dword [esp + 0x3a8]
fldcw word [esp + 0x56]
mov eax, dword [esp + 0x3a8]
mov dword [esp + 0x388], eax
mov al, byte [esp + 0x110]
mov byte [esp + 0x18c], al
mov byte [esp + 0x250], 0xe
mov byte [esp + 0x251], 7
mov byte [esp + 0x252], 0x6a
mov eax, 3
mov byte [esp + eax + 0x250], 0
add eax, 1
cmp eax, 8
jne 0x40f4e1
xor eax, eax
cmp eax, 8
jae 0x40f559
movzx edx, byte [esp + eax + 0x250]
mov ecx, eax
add ecx, 0x86c4a7e7
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xbc5170f8
xor ecx, 0x5e28b87c
add ecx, edx
mov esi, ecx
xor esi, 0xfffffffe
mov edx, ecx
or edx, 1
and edx, esi
mov esi, edx
and esi, 2
xor esi, 2
mov edi, edx
and edi, 0xfd
imul edi, esi
mov esi, edx
and esi, 2
or edx, 2
imul edx, esi
add edx, edi
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x250], cl
add eax, 1
jmp 0x40f4f3
lea eax, [esp + 0x250]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401c10
cmp eax, 0
setg byte [esp + 0x2f]
mov eax, dword [esp + 0x28c]
mov dword [esp], eax
call fcn.00413760
mov ebx, eax
xor eax, eax
sub eax, ebx
add eax, 0xffffffff
xor esi, esi
sub esi, eax
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f5ac
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], esi
mov eax, dword [esp + 0x28c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ada0
xor eax, eax
lea eax, [esp + 0x10c]
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 [0x446f40]
sub esp, 0x18
mov eax, dword [esp + 0x10c]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f629
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
mov esi, dword [0x446f40]
mov ecx, dword [esp + 0x10c]
xor edx, edx
lea edx, [esp + 0x10c]
mov dword [esp], 0
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0x270], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call esi
sub esp, 0x18
mov dword [esp], edi
call fcn.00408690
mov ebx, dword [esp + 0x390]
mov dword [esp], ebx
call fcn.00413760
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
mov edi, dword [esp + 0x28]
jne 0x40f6ac
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
xor ecx, ecx
mov dword [esp + 0x268], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040ada0
lea ecx, [esp + 0x578]
mov dword [esp], 1
call fcn.00409460
sub esp, 4
mov dword [esp + 0x260], 0
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x78]
mov dword [esp], ebx
call fcn.00402030
mov ecx, dword [esp + 0x260]
cmp ecx, eax
mov eax, ecx
jb 0x40f718
jmp 0x40f811
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00402010
mov dword [esp], eax
call fcn.00401990
mov edi, eax
cmp edi, 0
sete al
test al, 1
jne 0x40f73a
jmp 0x40f747
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x78]
jmp 0x40f804
mov dword [esp], edi
call fcn.00413760
mov esi, eax
add esi, 1
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f76c
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
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.0040ada0
mov eax, dword [esp + 0x394]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x388]
mov dword [esp + 0x10], eax
mov dword [esp + 0x364], ebx
mov dword [esp + 0xc], ebx
mov eax, dword [esp + 0x270]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x268]
mov dword [esp + 4], eax
lea eax, [esp + 0x578]
mov dword [esp], eax
xor eax, eax
mov cl, byte [esp + 0x2f]
mov al, cl
and eax, 1
mov dword [esp + 0x18], eax
call fcn.0041cac0
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
jmp 0x40f7ef
mov eax, dword [esp + 0x364]
mov dword [esp], eax
call fcn.00408690
mov ebx, dword [esp + 0x78]
jmp 0x40f804
add dword [esp + 0x260], 1
jmp 0x40f6fe
mov eax, dword [esp + 0x268]
mov dword [esp], eax
call fcn.00408690
mov ebx, dword [ebp + 8]
jmp 0x40f825
mov eax, dword [esp + 0x270]
mov dword [esp], eax
call fcn.00408690
lea ecx, [esp + 0x578]
call fcn.00409f20
lea ecx, [esp + 0x578]
call fcn.00409540
jmp 0x411831
mov al, byte [esp + 0x108]
mov byte [esp + 0x190], al
mov byte [esp + 0x308], 0x6d
mov byte [esp + 0x309], 0xc7
mov eax, 2
mov byte [esp + eax + 0x308], 0
add eax, 1
cmp eax, 8
jne 0x40f874
xor eax, eax
cmp eax, 8
jae 0x40f8db
movzx edx, byte [esp + eax + 0x308]
mov ecx, eax
add ecx, 0x82042331
xor ecx, edx
mov edx, ecx
and edx, 8
mov esi, ecx
and esi, 2
xor esi, 2
mov edi, ecx
and edi, 8
imul edi, esi
mov esi, ecx
and esi, 2
or edx, 2
imul edx, esi
mov esi, dword [esp + 0x20]
add edx, edi
mov edi, dword [esp + 0x28]
xor ecx, 0xa
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x308], cl
add eax, 1
jmp 0x40f886
lea eax, [esp + 0x308]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f10
cmp eax, 0
setne al
test al, 1
jne 0x40f909
jmp 0x40fc55
mov al, byte [esp + 0x104]
mov byte [esp + 0x194], al
mov byte [esp + 0x48], 0x14
mov byte [esp + 0x49], 0xe7
mov eax, 2
mov byte [esp + eax + 0x48], 0
add eax, 1
cmp eax, 4
jne 0x40f926
xor eax, eax
cmp eax, 4
jae 0x40f96c
movzx edx, byte [esp + eax + 0x48]
mov ecx, eax
add ecx, 0xa9
mov esi, 0x56
sub esi, eax
mov edi, 0x56
sub edi, eax
and esi, edi
and esi, edx
xor edx, 0xffffffff
and ecx, edx
or ecx, esi
add cl, 0xb3
mov byte [esp + eax + 0x48], cl
add eax, 1
jmp 0x40f935
lea eax, [esp + 0x48]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f10
cmp eax, 0
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
je 0x40fc55
mov al, byte [esp + 0x100]
mov byte [esp + 0x198], al
mov byte [esp + 0x300], 0x35
mov byte [esp + 0x301], 0x89
mov eax, 2
mov byte [esp + eax + 0x300], 0
add eax, 1
cmp eax, 8
jne 0x40f9bc
xor eax, eax
cmp eax, 8
jae 0x40fa2f
movzx edx, byte [esp + eax + 0x300]
mov ecx, eax
add ecx, 0x333ce4e2
mov esi, ecx
and esi, edx
mov edi, esi
and edi, 2
xor edi, 2
mov ebx, esi
and ebx, 0xfd
imul ebx, edi
mov edi, esi
and edi, 2
or esi, 2
imul esi, edi
add esi, ebx
add ecx, edx
sub ecx, esi
mov edx, ecx
xor edx, 0x6b
shl ecx, 1
and ecx, 0x28
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0x300], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40f9ce
lea eax, [esp + 0x300]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 5
call fcn.00401f10
cmp eax, 0
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
je 0x40fc55
mov al, byte [esp + 0xfc]
mov byte [esp + 0x19c], al
mov byte [esp + 0x2f8], 0x4a
mov byte [esp + 0x2f9], 0xf1
mov eax, 2
mov byte [esp + eax + 0x2f8], 0
add eax, 1
cmp eax, 8
jne 0x40fa85
xor eax, eax
cmp eax, 8
jae 0x40fab9
mov cl, byte [esp + eax + 0x2f8]
mov dl, al
add dl, 0x54
xor dl, cl
add dl, 0x5c
mov byte [esp + eax + 0x2f8], dl
add eax, 1
jmp 0x40fa97
lea eax, [esp + 0x2f8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f10
cmp eax, 0
je 0x40fc55
mov al, byte [esp + 0xf8]
mov byte [esp + 0x1a0], al
mov byte [esp + 0x44], 0x5c
mov byte [esp + 0x45], 0x31
mov eax, 2
mov byte [esp + eax + 0x44], 0
add eax, 1
cmp eax, 4
jne 0x40fafe
xor eax, eax
cmp eax, 4
jae 0x40fb73
movzx ecx, byte [esp + eax + 0x44]
mov edx, eax
add edx, 0xb4
mov esi, ecx
add esi, 1
mov edi, ecx
xor edi, 0xffffffff
or edx, edi
add edx, esi
mov edi, edx
and edi, 0xfffffffd
mov esi, edx
and esi, 2
xor esi, 2
imul esi, edi
mov edi, edx
and edi, 2
or edx, 2
imul edx, edi
mov edi, dword [esp + 0x28]
add edx, esi
add ecx, eax
add ecx, 0x18b4
mov esi, ecx
xor esi, edx
xor edx, 0xffffffff
and ecx, edx
shl ecx, 1
sub ecx, esi
mov esi, dword [esp + 0x20]
add cl, 0x7c
mov byte [esp + eax + 0x44], cl
add eax, 1
jmp 0x40fb0d
jmp 0x40fb75
jmp 0x40fb77
lea eax, [esp + 0x44]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401f10
cmp eax, 0
setne al
test al, 1
jne 0x40fba2
jmp 0x40fc55
mov al, byte [esp + 0xf4]
mov byte [esp + 0x1a4], al
mov byte [esp + 0x38], 0x5a
mov byte [esp + 0x39], 0x4a
mov byte [esp + 0x3a], 0x3e
mov eax, 3
mov byte [esp + eax + 0x38], 0
add eax, 1
cmp eax, 4
jne 0x40fbc4
xor eax, eax
jmp 0x40fbd5
cmp eax, 4
jae 0x40fc14
movzx edx, byte [esp + eax + 0x38]
mov ecx, eax
add ecx, 0x18b5
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
mov esi, dword [esp + 0x20]
mov edx, ecx
and edx, 0x8a
xor edx, 0x8a
and ecx, 0x75
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0x38], cl
add eax, 1
jmp 0x40fbd5
lea eax, [esp + 0x38]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401f10
cmp eax, 0
setne cl
mov al, cl
xor al, 0xff
xor cl, 0xff
or al, cl
and al, 1
xor al, 0xff
xor al, 0xff
or al, 0
jmp 0x40fc49
jmp 0x40fc4b
test al, 1
jne 0x411831
jmp 0x40fc5c
jmp 0x40fc57
jmp 0x411831
mov al, byte [esp + 0xf0]
mov byte [esp + 0x1a8], al
mov byte [esp + 0x2f0], 0xb5
mov byte [esp + 0x2f1], 0x1b
mov eax, 2
mov byte [esp + eax + 0x2f0], 0
add eax, 1
cmp eax, 7
jne 0x40fc7f
xor eax, eax
cmp eax, 7
jae 0x40fcfc
movzx esi, byte [esp + eax + 0x2f0]
mov edx, eax
add edx, 0xc99e437b
mov ecx, 0x3661bc84
sub ecx, eax
mov edi, 0x3661bc84
sub edi, eax
and ecx, edi
mov edi, ecx
shl edi, 1
xor edi, 0xffffffff
add ecx, edi
and ecx, esi
or edx, esi
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
shl edx, 1
xor edx, 0xffffffff
add ecx, edx
mov edx, ecx
add edx, 0x99
mov esi, 0x67
sub esi, ecx
or esi, 1
add esi, edx
or ecx, 1
add ecx, 0x98
add ecx, esi
mov byte [esp + eax + 0x2f0], cl
add eax, 1
jmp 0x40fc91
lea eax, [esp + 0x2f0]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x284], eax
mov al, byte [esp + 0xec]
mov byte [esp + 0x1ac], al
mov byte [esp + 0x2e8], 0x14
mov byte [esp + 0x2e9], 0xbb
mov eax, 2
mov byte [esp + eax + 0x2e8], 0
add eax, 1
cmp eax, 8
jne 0x40fd3d
xor eax, eax
cmp eax, 8
jae 0x40fda6
mov dl, byte [esp + eax + 0x2e8]
movzx edi, dl
mov ecx, eax
add ecx, 0x3eca79f
mov esi, ecx
and esi, edi
mov ebx, esi
and ebx, 0xfd
mov edi, esi
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, esi
and ebx, 2
or esi, 2
imul esi, ebx
add esi, edi
sub ecx, esi
add cl, dl
add cl, 0xe5
mov byte [esp + eax + 0x2e8], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40fd4f
lea eax, [esp + 0x2e8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov esi, eax
mov al, byte [esp + 0xe8]
mov byte [esp + 0x1b0], al
mov byte [esp + 0x2e0], 0xaf
mov byte [esp + 0x2e1], 0x1b
mov eax, 2
mov byte [esp + eax + 0x2e0], 0
add eax, 1
cmp eax, 5
jne 0x40fde2
xor eax, eax
cmp eax, 5
jae 0x40fe16
mov cl, byte [esp + eax + 0x2e0]
mov dl, al
add dl, 0xbb
xor dl, cl
add dl, 0x59
mov byte [esp + eax + 0x2e0], dl
add eax, 1
jmp 0x40fdf4
lea eax, [esp + 0x2e0]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401ae0
mov dword [esp + 0x294], eax
mov al, byte [esp + 0xe4]
mov byte [esp + 0x1b4], al
mov byte [esp + 0x2d8], 0x9a
mov byte [esp + 0x2d9], 0x11
mov eax, 2
mov byte [esp + eax + 0x2d8], 0
add eax, 1
cmp eax, 6
jne 0x40fe57
mov dword [esp + 0x39c], esi
xor eax, eax
cmp eax, 6
jae 0x40ff15
movzx edx, byte [esp + eax + 0x2d8]
mov ecx, eax
add ecx, 0x9a48b47c
mov esi, ecx
and esi, edx
shl esi, 1
mov edi, ecx
sub edi, esi
add edi, edx
mov esi, edi
shl esi, 1
xor esi, 0xffffffff
add edi, esi
mov esi, ecx
and esi, edi
mov ebx, esi
and ebx, 0xfffffffd
mov edi, esi
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, esi
and ebx, 2
or esi, 2
imul esi, ebx
add esi, edi
mov edi, esi
xor edi, 0xffffffff
and ecx, edi
mov edi, 0x65b74b83
sub edi, eax
and esi, edi
sub ecx, esi
add ecx, edx
mov edx, ecx
and edx, 0x91
mov edi, ecx
and edi, 0x91
mov esi, ecx
and esi, 2
xor esi, 2
imul esi, edi
mov edi, ecx
and edi, 2
or edx, 2
imul edx, edi
add edx, esi
xor ecx, 0x93
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x2d8], cl
add eax, 1
jmp 0x40fe70
lea eax, [esp + 0x2d8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov esi, eax
mov al, byte [esp + 0xe0]
mov byte [esp + 0x1b8], al
mov byte [esp + 0x2d0], 0xa8
mov byte [esp + 0x2d1], 0xf
mov eax, 2
mov byte [esp + eax + 0x2d0], 0
add eax, 1
cmp eax, 7
jne 0x40ff51
xor eax, eax
cmp eax, 7
jae 0x40ff95
movzx edx, byte [esp + eax + 0x2d0]
mov ecx, eax
add ecx, 0xfa73d0fd
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
add cl, 0xe
mov byte [esp + eax + 0x2d0], cl
add eax, 1
jmp 0x40ff63
lea eax, [esp + 0x2d0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004019b0
fnstcw word [esp + 0x54]
movzx eax, word [esp + 0x54]
or eax, 0xc00
mov word [esp + 0x220], ax
fldcw word [esp + 0x220]
fistp dword [esp + 0x3b4]
fldcw word [esp + 0x54]
mov eax, dword [esp + 0x3b4]
mov dword [esp + 0x3a4], eax
mov al, byte [esp + 0xdc]
mov byte [esp + 0x1bc], al
mov byte [esp + 0x248], 0x6e
mov byte [esp + 0x249], 0x62
mov byte [esp + 0x24a], 0xf2
mov eax, 3
mov byte [esp + eax + 0x248], 0
add eax, 1
cmp eax, 8
jne 0x41000d
mov dword [esp + 0x3a0], esi
xor eax, eax
cmp eax, 8
jae 0x410088
mov cl, byte [esp + eax + 0x248]
movzx edi, cl
mov esi, eax
shl esi, 1
and esi, 0x5f58a658
mov edx, eax
xor edx, 0xafac532c
mov ebx, edx
and ebx, esi
shl ebx, 1
xor edx, esi
add edx, ebx
mov esi, edx
and esi, edi
mov edi, esi
and edi, 2
xor edi, 2
mov ebx, esi
and ebx, 0xfd
imul ebx, edi
mov edi, esi
and edi, 2
or esi, 2
imul esi, edi
add esi, ebx
sub edx, esi
add dl, cl
add dl, 0x24
mov byte [esp + eax + 0x248], dl
add eax, 1
jmp 0x410026
lea eax, [esp + 0x248]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004019b0
fnstcw word [esp + 0x52]
movzx eax, word [esp + 0x52]
or eax, 0xc00
mov word [esp + 0x21e], ax
fldcw word [esp + 0x21e]
fistp dword [esp + 0x3b0]
fldcw word [esp + 0x52]
mov eax, dword [esp + 0x3b0]
mov dword [esp + 0x398], eax
mov eax, dword [esp + 0x284]
mov dword [esp], eax
call fcn.00413760
mov esi, eax
and esi, 1
or eax, 1
add esi, eax
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
mov ebx, dword [ebp + 8]
jne 0x410109
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], esi
mov eax, dword [esp + 0x284]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ada0
lea ecx, [esp + 0x3bc]
mov dword [esp], edi
call fcn.004137c0
sub esp, 4
mov dword [esp], edi
call fcn.00408690
mov esi, dword [esp + 0x20]
lea ecx, [esp + 0x3bc]
mov dword [esp], 0x400
call fcn.00434a50
sub esp, 4
cmp eax, 0
jge 0x410176
mov edi, dword [esp + 0x28]
jmp 0x4107d6
mov dword [esp + 0xd8], 0
mov edi, dword [esp + 0x3bc]
mov al, byte [esp + 0x1c0]
mov byte [esp + 0x21c], al
mov byte [esp + 0x1c4], 0x8b
mov byte [esp + 0x1c5], 0x8a
mov byte [esp + 0x1c6], 0xb5
mov byte [esp + 0x1c7], 0xb4
mov eax, 4
mov byte [esp + eax + 0x1c4], 0
add eax, 1
cmp eax, 6
jne 0x4101bb
xor eax, eax
cmp eax, 6
jae 0x410204
movzx ecx, byte [esp + eax + 0x1c4]
mov edx, eax
add edx, 0x667f2a5e
xor edx, ecx
mov ecx, edx
and ecx, 1
xor ecx, 1
mov esi, 0xd6
sub esi, edx
or esi, 1
sub ecx, esi
mov byte [esp + eax + 0x1c4], cl
add eax, 1
jmp 0x4101cd
mov esi, dword [esp + 0x1c4]
xor ebx, ebx
mov ecx, 2
cmp ebx, dword [0x446f44]
jb 0x41021f
jmp 0x4102a3
mov ecx, dword [0x446f48]
cmp dword [ecx + ebx*8], 0xae6e2b0b
sete dl
mov byte [esp + 0x2d], dl
test dl, 1
jne 0x41023a
jmp 0x410290
mov edx, dword [ecx + ebx*8 + 4]
mov ecx, 2
cmp edx, esi
je 0x410292
mov eax, dword [0x446f4c]
xor ecx, ecx
lea ecx, [esp + 0xd8]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 5
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], 0x2b
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], ecx
call fcn.00437050
mov ecx, 1
jmp 0x410292
xor ecx, ecx
test byte [esp + 0x2d], 1
je 0x41029b
jmp 0x4102a3
add ebx, 1
jmp 0x41020d
cmp ecx, 2
mov ebx, dword [ebp + 8]
je 0x4102ad
mov esi, eax
mov al, byte [esp + 0xcc]
mov byte [esp + 0x1cc], al
mov byte [esp + 0xd0], 0x38
mov byte [esp + 0xd1], 0x3f
mov byte [esp + 0xd2], 0x3e
mov byte [esp + 0xd3], 0xf1
mov eax, 4
mov byte [esp + eax + 0xd0], 0
add eax, 1
cmp eax, 7
jne 0x4102e0
xor eax, eax
cmp eax, 7
jae 0x41033c
movzx edx, byte [esp + eax + 0xd0]
mov edi, eax
add edi, 0x17f32d35
mov ecx, 0x480cd2ca
sub ecx, eax
and ecx, 0xe33c6b2c
and edi, 0x1cc394d3
or ecx, edi
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 0x2d
add ecx, 0xf6
add ecx, edx
mov byte [esp + eax + 0xd0], cl
add eax, 1
jmp 0x4102f2
mov eax, dword [esp + 0xd0]
cmp esi, eax
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
jne 0x4107d4
mov eax, dword [esp + 0xd8]
sub eax, 0xfffffffe
mov dword [esp], eax
call fcn.00434740
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0xd8]
sub eax, 0xfffffffe
mov dword [esp + 0x370], eax
mov eax, dword [esp + 0x3bc]
mov dword [esp + 0x36c], eax
mov al, byte [esp + 0x1d0]
mov byte [esp + 0x218], al
mov byte [esp + 0x1d4], 0x8b
mov byte [esp + 0x1d5], 0x8a
mov byte [esp + 0x1d6], 0xb5
mov byte [esp + 0x1d7], 0xb4
mov eax, 4
mov byte [esp + eax + 0x1d4], 0
add eax, 1
cmp eax, 6
jne 0x4103bb
xor eax, eax
cmp eax, 6
jae 0x410404
movzx ecx, byte [esp + eax + 0x1d4]
mov edx, eax
add edx, 0x667f2a5e
xor edx, ecx
mov ecx, edx
and ecx, 1
xor ecx, 1
mov esi, 0xd6
sub esi, edx
or esi, 1
sub ecx, esi
mov byte [esp + eax + 0x1d4], cl
add eax, 1
jmp 0x4103cd
mov esi, dword [esp + 0x1d4]
xor edi, edi
cmp edi, dword [0x446f44]
jb 0x410423
mov ecx, 2
mov edi, dword [esp + 0x28]
jmp 0x4104aa
mov edx, dword [0x446f48]
cmp dword [edx + edi*8], 0xae6e2b0b
sete bl
xor ecx, ecx
test bl, 1
jne 0x41043c
jmp 0x410497
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, esi
je 0x410497
mov eax, dword [0x446f4c]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 5
mov eax, dword [esp + 0x36c]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esp + 0x74]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x370]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
call fcn.00437050
mov ecx, 1
test bl, 1
jne 0x4104a4
add edi, 1
jmp 0x41040d
mov edi, dword [esp + 0x28]
jmp 0x4104aa
cmp ecx, 2
je 0x4104b1
mov esi, eax
cmp esi, 0
jl 0x4107c1
mov edi, dword [esp + 0x39c]
mov dword [esp], edi
call fcn.00413760
mov ebx, eax
mov esi, ebx
add esi, 1
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4104e8
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
xor ecx, ecx
mov dword [esp + 0x374], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov eax, dword [esp + 0x74]
mov edi, eax
add edi, 4
mov esi, dword [eax + 4]
mov ax, word [eax]
movzx eax, ax
shr eax, 1
shl eax, 1
add esi, eax
add esi, 0xfffffffe
mov eax, esi
cmp eax, dword [edi]
jb 0x41054e
mov cx, word [eax]
cmp cx, 0
je 0x41054e
movzx ecx, cx
cmp ecx, 0x5c
jne 0x410547
mov esi, eax
jmp 0x410550
add eax, 0xfffffffe
jmp 0x41054c
jmp 0x41052e
jmp 0x410550
mov eax, dword [edi]
sub esi, eax
sar esi, 1
mov eax, esi
sub eax, 0x1ca41f78
add eax, ebx
add eax, 0x1ca41f78
add eax, 0xbf99575c
add eax, 1
sub eax, 0xbf99575c
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410587
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
mov ebx, eax
mov eax, dword [edi]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], esi
call fcn.004137f0
mov dword [esp], eax
mov edi, dword [esp + 0x374]
mov dword [esp + 4], edi
call fcn.0040a3a0
mov esi, eax
mov dword [esp], edi
call fcn.00408690
sub esi, ebx
sar esi, 1
add esi, 0xf4d1af21
add esi, 1
sub esi, 0xf4d1af21
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4105eb
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
mov dword [esp], ebx
mov dword [esp + 0x26c], eax
mov dword [esp + 4], eax
call fcn.00432c80
jmp 0x410608
mov dword [esp], ebx
call fcn.00408690
mov edi, dword [esp + 0x3a0]
mov dword [esp], edi
call fcn.00413760
mov esi, eax
add esi, 1
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41063c
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
xor ecx, ecx
mov dword [esp + 0x264], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ada0
lea ecx, [esp + 0x4f0]
mov dword [esp], 1
call fcn.00409460
sub esp, 4
xor esi, esi
mov eax, dword [esp + 0x294]
mov dword [esp], eax
call fcn.00402030
cmp esi, eax
setb al
test al, 1
jne 0x41069c
jmp 0x410697
jmp 0x410781
mov eax, dword [esp + 0x294]
mov dword [esp], eax
mov dword [esp + 4], esi
call fcn.00402010
mov dword [esp], eax
call fcn.00401990
mov ebx, eax
cmp ebx, 0
jne 0x4106c3
jmp 0x41076d
mov dword [esp], ebx
call fcn.00413760
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4106e8
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
mov dword [esp + 0x360], 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.0040ada0
lea eax, [esp + 0x4f0]
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x264]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x26c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x360]
mov edi, eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x398]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3a4]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.0041cac0
mov dword [esp], edi
call fcn.00408690
jmp 0x41076d
add esi, 0xf79e21ae
add esi, 1
sub esi, 0xf79e21ae
jmp 0x41067d
mov eax, dword [esp + 0x264]
mov dword [esp], eax
call fcn.00408690
jmp 0x410792
mov eax, dword [esp + 0x26c]
mov dword [esp], eax
call fcn.00408690
lea ecx, [esp + 0x4f0]
call fcn.00409f20
lea ecx, [esp + 0x4f0]
call fcn.00409540
jmp 0x4107bb
mov edi, dword [esp + 0x28]
jmp 0x4107c1
mov eax, dword [esp + 0x74]
mov dword [esp], eax
call fcn.004347a0
mov ebx, dword [ebp + 8]
mov esi, dword [esp + 0x20]
jmp 0x4107d6
lea ecx, [esp + 0x3bc]
call fcn.004138b0
jmp 0x411831
mov al, byte [esp + 0xc8]
mov byte [esp + 0x1dc], al
mov byte [esp + 0x2c8], 0xc0
mov byte [esp + 0x2c9], 0x71
mov eax, 2
mov byte [esp + eax + 0x2c8], 0
add eax, 1
cmp eax, 7
jne 0x41080a
xor eax, eax
cmp eax, 7
jae 0x41087d
movzx esi, byte [esp + eax + 0x2c8]
mov ecx, eax
xor ecx, 0x44f7b66c
mov edx, eax
shl edx, 1
and edx, 0x76109326
sub edx, ecx
mov ecx, edx
or ecx, esi
and edx, esi
add ecx, 0x41b0ed36
sub ecx, edx
add ecx, 0xbe4f12ca
mov esi, ecx
xor esi, 0xe4
mov edx, ecx
or edx, 0x1b
and edx, esi
or ecx, 0x1b
add edx, ecx
add dl, 1
mov byte [esp + eax + 0x2c8], dl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x41081c
jmp 0x41087f
lea eax, [esp + 0x2c8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x70], eax
mov al, byte [esp + 0xc4]
mov byte [esp + 0x1e0], al
mov byte [esp + 0x2c0], 0xb6
mov byte [esp + 0x2c1], 0x3f
mov eax, 2
mov esi, dword [esp + 0x20]
mov byte [esp + eax + 0x2c0], 0
add eax, 1
cmp eax, 5
jne 0x4108c1
xor eax, eax
cmp eax, 5
jae 0x41092a
movzx edx, byte [esp + eax + 0x2c0]
mov edi, 0x7704bc4a
sub edi, eax
mov ecx, eax
add ecx, 0x88fb43b5
mov esi, ecx
and esi, 0xa4de793c
and edi, 0x5b2186c3
or esi, edi
xor esi, edx
or ecx, edx
xor esi, 0x3c
and ecx, esi
mov esi, dword [esp + 0x20]
mov ebx, eax
add ebx, 0xb5
or ebx, edx
xor ecx, 0xffffffff
and ebx, ecx
add bl, 0x77
mov byte [esp + eax + 0x2c0], bl
add eax, 1
jmp 0x4108d3
lea eax, [esp + 0x2c0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401880
mov edi, eax
cmp dword [esp + 0x70], 0
sete al
test edi, edi
sete cl
or al, cl
mov ebx, dword [ebp + 8]
test al, 1
jne 0x41095b
jmp 0x410964
mov edi, dword [esp + 0x28]
jmp 0x4112b7
mov eax, dword [esp + 0x70]
mov dword [esp], eax
call fcn.00413760
mov ebx, eax
mov eax, ebx
and eax, 1
shl eax, 1
xor ebx, 1
add ebx, eax
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410996
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
xor ecx, ecx
mov dword [esp + 0x290], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x70]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov dword [esp], edi
call fcn.00413760
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4109e8
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
mov dword [esp + 0x7c], eax
jmp 0x4109f6
xor eax, eax
mov eax, dword [esp + 0x7c]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov ebx, dword [ebp + 8]
jmp 0x410a19
mov al, byte [esp + 0xc0]
mov byte [esp + 0x1e4], al
mov byte [esp + 0x2b8], 0xaa
mov byte [esp + 0x2b9], 0xf
mov eax, 2
mov byte [esp + eax + 0x2b8], 0
add eax, 1
cmp eax, 8
jne 0x410a3c
xor eax, eax
cmp eax, 8
jae 0x410a92
movzx edx, byte [esp + eax + 0x2b8]
mov ecx, eax
add ecx, 0x91f98aa2
mov esi, ecx
shl esi, 1
and esi, 0x66ecd8b6
xor ecx, 0x33766c5b
add ecx, esi
mov ebx, ecx
or ebx, edx
and ecx, edx
add ebx, 0x36
sub ebx, ecx
add bl, 0xd9
mov byte [esp + eax + 0x2b8], bl
mov ebx, dword [ebp + 8]
add eax, 1
jmp 0x410a4e
lea eax, [esp + 0x2b8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov edi, eax
mov esi, dword [esp + 0x20]
cmp edi, 0
setne al
jmp 0x410ab7
mov dword [esp + 0x6c], 0
test al, 1
jne 0x410ac5
jmp 0x410b14
mov dword [esp], edi
call fcn.00413760
mov esi, eax
sub esi, 0xffffffff
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410aea
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
xor ecx, ecx
mov dword [esp + 0x6c], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov esi, dword [esp + 0x20]
mov al, byte [esp + 0xbc]
mov byte [esp + 0x1e8], al
mov byte [esp + 0x2b0], 0x5e
mov byte [esp + 0x2b1], 0xcb
mov eax, 2
mov byte [esp + eax + 0x2b0], 0
add eax, 1
cmp eax, 7
jne 0x410b37
xor eax, eax
cmp eax, 7
jae 0x410ba8
movzx edx, byte [esp + eax + 0x2b0]
mov ecx, eax
add ecx, 0x841ebeb3
mov edi, edx
add edi, 1
mov ebx, edx
xor ebx, 0xffffffff
mov esi, ecx
or esi, ebx
add esi, edi
mov edi, esi
and edi, 2
xor edi, 2
mov ebx, esi
and ebx, 0xfd
imul ebx, edi
mov edi, esi
and edi, 2
or esi, 2
imul esi, edi
add esi, ebx
mov ebx, dword [ebp + 8]
add ecx, edx
sub ecx, esi
mov esi, dword [esp + 0x20]
add cl, 0x81
mov byte [esp + eax + 0x2b0], cl
add eax, 1
jmp 0x410b49
lea eax, [esp + 0x2b0]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov edi, eax
mov dword [esp + 0x68], 0
cmp edi, 0
je 0x410c1d
mov dword [esp], edi
call fcn.00413760
mov esi, eax
sub esi, 0xffffffff
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410bf3
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
xor ecx, ecx
mov dword [esp + 0x68], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov esi, dword [esp + 0x20]
mov al, byte [esp + 0xb8]
mov byte [esp + 0x1ec], al
mov byte [esp + 0x2a8], 0xc4
mov byte [esp + 0x2a9], 0x31
mov eax, 2
mov byte [esp + eax + 0x2a8], 0
add eax, 1
cmp eax, 6
jne 0x410c40
xor eax, eax
cmp eax, 6
jae 0x410cb4
movzx esi, byte [esp + eax + 0x2a8]
mov edx, eax
add edx, 0xba42a474
mov ecx, esi
shl ecx, 1
xor ecx, 0xffffffff
add ecx, esi
and edx, ecx
mov ecx, 0x8b
sub ecx, eax
mov edi, esi
add edi, 1
xor esi, 0xffffffff
or ecx, esi
add ecx, edi
or ecx, edx
mov edx, ecx
add edx, 0x5cb2c9bb
mov esi, edx
and esi, 1
and edx, 1
xor edx, 0xffffffff
add ecx, 0xbd
add ecx, edx
add ecx, esi
mov esi, dword [esp + 0x20]
mov byte [esp + eax + 0x2a8], cl
add eax, 1
jmp 0x410c52
lea eax, [esp + 0x2a8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov edi, eax
mov dword [esp + 0x64], 0
cmp edi, 0
inc dword [eax]
inc dword [eax]
je 0x410d29
mov dword [esp], edi
call fcn.00413760
mov esi, eax
sub esi, 0xffffffff
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410cff
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
xor ecx, ecx
mov dword [esp + 0x64], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov esi, dword [esp + 0x20]
mov al, byte [esp + 0xb4]
mov byte [esp + 0x1f0], al
mov byte [esp + 0x34], 0xbd
mov byte [esp + 0x35], 0xa1
mov byte [esp + 0x36], 0x1e
mov eax, 3
mov byte [esp + eax + 0x34], 0
add eax, 1
cmp eax, 4
jne 0x410d4b
xor eax, eax
cmp eax, 4
jae 0x410d99
movzx edx, byte [esp + eax + 0x34]
mov ecx, eax
add ecx, 0x18ba
mov esi, ecx
and esi, edx
shl esi, 1
sub ecx, esi
mov esi, dword [esp + 0x20]
add ecx, edx
add ecx, 0xffff845d
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, 0x49
or ecx, edx
add cl, 0xb7
mov byte [esp + eax + 0x34], cl
add eax, 1
jmp 0x410d5a
lea eax, [esp + 0x34]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401ae0
xor ecx, ecx
cmp eax, 0
mov edi, 0
je 0x411177
mov dword [esp + 0x280], eax
mov dword [esp], eax
call fcn.00402030
mov ecx, 0xc
mov dword [esp + 0x40], eax
mul ecx
seto cl
add eax, 4
setb dl
mov dh, cl
adc dh, 0
and dl, cl
sub dh, dl
mov ecx, 0xffffffff
test dh, 1
jne 0x410df1
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
mov edi, eax
mov ecx, dword [esp + 0x40]
mov dword [edi], ecx
add edi, 4
cmp ecx, 0
je 0x410e2f
mov eax, ecx
imul eax, eax, 0xc
mov ebx, edi
add ebx, eax
mov esi, edi
mov ecx, esi
call fcn.004138c0
add esi, 0xc
cmp esi, ebx
jne 0x410e14
mov ebx, dword [ebp + 8]
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x40]
jmp 0x410e2f
mov dword [esp + 0x278], edi
xor edi, edi
mov eax, dword [esp + 0x280]
jmp 0x410e41
cmp edi, ecx
jb 0x410e51
mov edi, dword [esp + 0x278]
jmp 0x411177
mov dword [esp], eax
mov dword [esp + 0x38c], edi
mov dword [esp + 4], edi
call fcn.00402040
mov edi, eax
mov al, byte [esp + 0xb0]
mov byte [esp + 0x1f4], al
mov byte [esp + 0x240], 0xa5
mov byte [esp + 0x241], 0xbb
mov byte [esp + 0x242], 0xd6
mov eax, 3
mov byte [esp + eax + 0x240], 0
add eax, 1
cmp eax, 8
jne 0x410e91
xor eax, eax
cmp eax, 8
jae 0x410ed7
mov cl, byte [esp + eax + 0x240]
mov dl, al
add dl, 0x4e
xor dl, cl
add dl, 0x7a
mov byte [esp + eax + 0x240], dl
mov ecx, eax
shl ecx, 1
and ecx, 2
mov edx, eax
shl edx, 1
and edx, 2
add edx, 0xffffffff
sub eax, edx
add eax, ecx
jmp 0x410ea3
lea eax, [esp + 0x240]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x384], eax
mov al, byte [esp + 0xac]
mov byte [esp + 0x1f8], al
mov byte [esp + 0x238], 0x45
mov byte [esp + 0x239], 0xbf
mov byte [esp + 0x23a], 0x36
mov eax, 3
mov byte [esp + eax + 0x238], 0
add eax, 1
cmp eax, 6
jne 0x410f1c
xor eax, eax
cmp eax, 6
jae 0x410f94
movzx ecx, byte [esp + eax + 0x238]
mov ebx, eax
and ebx, 0x7661a234
mov esi, eax
and esi, 0x7661a234
mov edx, eax
and edx, 2
xor edx, 2
imul edx, esi
mov esi, eax
and esi, 2
or ebx, 2
imul ebx, esi
add ebx, edx
mov edx, eax
xor edx, 0x7661a236
add edx, ebx
mov ebx, edx
and ebx, ecx
shl ebx, 1
add edx, ecx
mov ecx, edx
xor ecx, 0xffffffff
mov esi, ebx
and esi, ecx
xor ebx, 0xffffffff
and edx, ebx
sub edx, esi
add dl, 0xf2
mov byte [esp + eax + 0x238], dl
add eax, 1
jmp 0x410f2e
lea eax, [esp + 0x238]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x380], eax
mov al, byte [esp + 0xa0]
mov byte [esp + 0x1fc], al
mov byte [esp + 0xa4], 0x84
mov byte [esp + 0xa5], 0x7d
mov byte [esp + 0xa6], 0x70
mov byte [esp + 0xa7], 0x13
mov eax, 4
mov esi, dword [esp + 0x20]
mov byte [esp + eax + 0xa4], 0
add eax, 1
cmp eax, 7
jne 0x410fe5
xor eax, eax
cmp eax, 7
jae 0x411067
movzx ecx, byte [esp + eax + 0xa4]
mov edx, 0x22824afb
sub edx, eax
or edx, ecx
mov ebx, 0xfb
sub ebx, eax
mov esi, 0xfb
sub esi, eax
or ebx, esi
and ebx, ecx
xor edx, 0xffffffff
or ebx, edx
mov edx, 0x22824afb
sub edx, eax
mov esi, 0x22824afb
sub esi, eax
and edx, esi
mov esi, dword [esp + 0x20]
or edx, ebx
shl edx, 1
add edx, eax
add edx, 0x5d7db506
add edx, ecx
mov ecx, edx
shl ecx, 1
and ecx, 0xd6
xor edx, 0xeb
add edx, ecx
add dl, 1
mov byte [esp + eax + 0xa4], dl
add eax, 1
jmp 0x410ff7
jmp 0x411069
lea eax, [esp + 0xa4]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401c10
xor ebx, ebx
cmp eax, 0
setg byte [esp + 0x2e]
mov al, byte [esp + 0x94]
mov byte [esp + 0x200], al
mov byte [esp + 0x98], 0x17
mov byte [esp + 0x99], 4
mov byte [esp + 0x9a], 0x19
mov byte [esp + 0x9b], 0x97
mov eax, 4
mov byte [esp + eax + 0x98], 0
add eax, 1
cmp eax, 7
jne 0x4110b9
xor eax, eax
cmp eax, 7
jae 0x411102
movzx esi, byte [esp + eax + 0x98]
mov ecx, 0x99
sub ecx, eax
or ecx, esi
mov edx, 0x99
sub edx, eax
and edx, esi
mov esi, dword [esp + 0x20]
xor ecx, 0xffffffff
or edx, ecx
add dl, 2
mov byte [esp + eax + 0x98], dl
add eax, 1
jmp 0x4110cb
lea eax, [esp + 0x98]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401c10
xor edx, edx
cmp eax, 0
setg dl
mov edi, dword [esp + 0x38c]
imul eax, edi, 0xc
mov ecx, dword [esp + 0x278]
add ecx, eax
mov eax, dword [esp + 0x384]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x380]
mov dword [esp], eax
and edx, 1
mov dword [esp + 0xc], edx
mov al, byte [esp + 0x2e]
mov bl, al
and ebx, 1
mov dword [esp + 8], ebx
call fcn.004138e0
sub esp, 0x10
sub edi, 0xffffffff
mov ebx, dword [ebp + 8]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x280]
jmp 0x410e41
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x3cc], eax
mov eax, dword [esp + 0x290]
mov dword [esp + 0x3d0], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x3d4], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x3d8], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x3dc], eax
lea ecx, [esp + 0x468]
mov dword [esp], 2
call fcn.00409460
sub esp, 4
lea eax, [esp + 0x468]
lea ecx, [esp + 0x3cc]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edi
mov eax, dword [esp + 0x40]
mov dword [esp + 0xc], eax
call fcn.00413fb0
lea ecx, [esp + 0x468]
call fcn.00409f20
cmp edi, 0
je 0x411234
mov ebx, edi
add ebx, 0xfffffffc
imul eax, dword [edi - 4], 0xc
mov esi, edi
add esi, eax
cmp edi, esi
je 0x411225
jmp 0x411215
add esi, 0xfffffff4
mov ecx, esi
call fcn.00413a40
cmp esi, edi
jne 0x411215
jmp 0x411225
mov dword [esp], ebx
call fcn.00408690
mov ebx, dword [ebp + 8]
mov esi, dword [esp + 0x20]
jmp 0x411236
mov eax, dword [esp + 0x7c]
mov dword [esp], eax
call fcn.00408690
mov edi, dword [esp + 0x28]
jmp 0x411248
mov eax, dword [esp + 0x290]
mov dword [esp], eax
call fcn.00408690
cmp dword [esp + 0x6c], 0
sete al
test al, 1
jne 0x411271
jmp 0x411265
mov eax, dword [esp + 0x6c]
mov dword [esp], eax
call fcn.00408690
cmp dword [esp + 0x68], 0
sete al
test al, 1
jne 0x41128d
jmp 0x41127f
mov eax, dword [esp + 0x68]
mov dword [esp], eax
call fcn.00408690
jmp 0x41128d
cmp dword [esp + 0x64], 0
sete al
test al, 1
jne 0x4112a9
jmp 0x41129b
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call fcn.00408690
jmp 0x4112a9
lea ecx, [esp + 0x468]
call fcn.00409540
jmp 0x4112b7
jmp 0x411831
mov al, byte [esp + 0x90]
mov byte [esp + 0x204], al
mov byte [esp + 0x2a0], 0x14
mov byte [esp + 0x2a1], 0xbb
mov eax, 2
mov byte [esp + eax + 0x2a0], 0
add eax, 1
cmp eax, 8
jne 0x4112df
xor eax, eax
cmp eax, 8
jae 0x411325
movzx edx, byte [esp + eax + 0x2a0]
mov ecx, eax
add ecx, 0xdf
mov esi, 0x20
sub esi, eax
and esi, edx
xor edx, 0xffffffff
and ecx, edx
or ecx, esi
add cl, 0xa5
mov byte [esp + eax + 0x2a0], cl
add eax, 1
jmp 0x4112f1
lea eax, [esp + 0x2a0]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov ebx, eax
mov al, byte [esp + 0x8c]
mov byte [esp + 0x208], al
mov byte [esp + 0x298], 0x46
mov byte [esp + 0x299], 0xc9
mov eax, 2
mov byte [esp + eax + 0x298], 0
add eax, 1
cmp eax, 6
jne 0x411361
xor eax, eax
cmp eax, 6
jae 0x4113a4
movzx edx, byte [esp + eax + 0x298]
mov ecx, eax
add ecx, 0x32
mov esi, 0xcd
sub esi, eax
and esi, edx
xor edx, 0xffffffff
and ecx, edx
or ecx, esi
add cl, 6
mov byte [esp + eax + 0x298], cl
add eax, 1
jmp 0x411373
lea eax, [esp + 0x298]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401880
mov edi, eax
test ebx, ebx
sete al
test edi, edi
sete cl
or al, cl
test al, 1
mov esi, dword [esp + 0x20]
jne 0x4113d3
jmp 0x4113df
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x28]
jmp 0x41182f
mov dword [esp], ebx
call fcn.00413760
mov esi, eax
add esi, 0x8e7f03e4
add esi, 1
sub esi, 0x8e7f03e4
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411410
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
xor ecx, ecx
mov dword [esp + 0x288], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov dword [esp], edi
call fcn.00413760
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 0x411464
mov ecx, eax
mov dword [esp], ecx
call fcn.00408680
xor ecx, ecx
mov dword [esp + 0x27c], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov al, byte [esp + 0x88]
mov byte [esp + 0x20c], al
mov byte [esp + 0x230], 0x5f
mov byte [esp + 0x231], 0x43
mov byte [esp + 0x232], 0xca
mov eax, 3
mov ebx, dword [ebp + 8]
mov byte [esp + eax + 0x230], 0
add eax, 1
cmp eax, 6
jne 0x4114bb
xor eax, eax
mov edi, dword [esp + 0x28]
cmp eax, 6
jae 0x411505
mov dl, byte [esp + eax + 0x230]
mov esi, eax
shl esi, 1
and esi, 0x66
mov ecx, eax
xor ecx, 0x33
add ecx, esi
xor cl, dl
add cl, 1
mov byte [esp + eax + 0x230], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x4114d1
lea eax, [esp + 0x230]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401ae0
mov dword [esp + 0x274], eax
cmp eax, 0
setne al
mov esi, dword [esp + 0x20]
xor ebx, ebx
test al, 1
mov eax, 0
jne 0x411539
jmp 0x411762
mov eax, dword [esp + 0x274]
mov dword [esp], eax
call fcn.00402030
mov ebx, eax
mov ecx, 8
mov eax, ebx
mul ecx
seto cl
add eax, 4
setb dl
and cl, cl
xor cl, 0xff
mov ch, dl
xor ch, 0xff
xor dl, 0xff
or ch, dl
and cl, ch
xor cl, 0xff
mov edx, 0xffffffff
test cl, 1
jne 0x41157c
mov edx, eax
mov dword [esp], edx
call fcn.00408680
mov dword [eax], ebx
add eax, 4
cmp ebx, 0
mov dword [esp + 0x60], eax
mov dword [esp + 0x5c], ebx
je 0x4115bb
mov ecx, ebx
shl ecx, 3
mov ebx, eax
add ebx, ecx
mov esi, eax
jmp 0x4115a3
mov ecx, esi
call fcn.00413a70
add esi, 8
cmp esi, ebx
jne 0x4115a3
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x5c]
jmp 0x4115bb
xor ecx, ecx
jmp 0x4115bf
cmp ecx, ebx
jb 0x4115ce
mov eax, ebx
mov ebx, dword [esp + 0x60]
jmp 0x411762
mov eax, dword [esp + 0x274]
mov dword [esp], eax
mov dword [esp + 0x37c], ecx
mov dword [esp + 4], ecx
call fcn.00402040
mov edi, eax
mov al, byte [esp + 0x84]
mov byte [esp + 0x210], al
mov byte [esp + 0x228], 0x25
mov byte [esp + 0x229], 0x2f
mov byte [esp + 0x22a], 0x82
mov eax, 3
mov byte [esp + eax + 0x228], 0
add eax, 1
cmp eax, 7
jne 0x411615
xor eax, eax
cmp eax, 7
jae 0x411670
movzx ecx, byte [esp + eax + 0x228]
mov edx, 0x462741f
sub edx, eax
and edx, 0x123025b5
mov ebx, eax
add ebx, 0x7b9d8be0
and ebx, 0xedcfda4a
xor ecx, 0x123025b5
or edx, ebx
mov ebx, ecx
and ebx, edx
shl ebx, 1
add ecx, edx
sub ecx, ebx
add cl, 0xa0
mov byte [esp + eax + 0x228], cl
add eax, 1
jmp 0x411627
lea eax, [esp + 0x228]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x368], eax
mov al, byte [esp + 0x80]
mov byte [esp + 0x214], al
mov byte [esp + 0x30], 0xf7
mov byte [esp + 0x31], 0x8d
mov byte [esp + 0x32], 0xa
mov eax, 3
mov byte [esp + eax + 0x30], 0
add eax, 1
cmp eax, 4
jne 0x4116ac
xor ebx, ebx
cmp ebx, 4
jae 0x411711
movzx edx, byte [esp + ebx + 0x30]
mov eax, ebx
add eax, 0x18c3
mov ecx, eax
and ecx, edx
mov esi, ecx
and esi, 2
xor esi, 2
mov dword [esp + 0x378], edi
mov edi, ecx
and edi, 0xfd
imul edi, esi
mov esi, ecx
and esi, 2
or ecx, 2
imul ecx, esi
mov esi, dword [esp + 0x20]
add ecx, edi
mov edi, dword [esp + 0x378]
add eax, edx
sub eax, ecx
add al, 0x31
mov byte [esp + ebx + 0x30], al
add ebx, 1
jmp 0x4116bb
lea eax, [esp + 0x30]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401880
mov edi, dword [esp + 0x37c]
mov edx, edi
shl edx, 3
mov ecx, dword [esp + 0x60]
add ecx, edx
mov dword [esp], eax
mov eax, dword [esp + 0x368]
mov dword [esp + 4], eax
call fcn.00413a80
sub esp, 8
mov ecx, edi
mov eax, ecx
and eax, 1
or ecx, 1
add ecx, eax
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x5c]
jmp 0x4115bf
mov dword [esp + 0x5c], eax
lea ecx, [esp + 0x3e0]
mov dword [esp], 3
call fcn.00409460
sub esp, 4
lea eax, [esp + 0x3e0]
mov dword [esp], eax
mov eax, dword [esp + 0x288]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x27c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebx
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x10], eax
call fcn.0041ab30
lea ecx, [esp + 0x3e0]
call fcn.00409f20
cmp ebx, 0
mov ecx, ebx
mov ebx, dword [ebp + 8]
je 0x411801
mov ebx, ecx
add ebx, 0xfffffffc
mov eax, dword [ecx - 4]
shl eax, 3
mov esi, ecx
add esi, eax
cmp ecx, esi
je 0x4117f0
mov dword [esp + 0x60], ecx
jmp 0x4117dc
add esi, 0xfffffff8
mov ecx, esi
call fcn.00413b30
mov ecx, dword [esp + 0x60]
cmp esi, ecx
jne 0x4117dc
jmp 0x4117f0
mov dword [esp], ebx
call fcn.00408690
mov ebx, dword [ebp + 8]
mov esi, dword [esp + 0x20]
jmp 0x411801
jmp 0x411803
mov eax, dword [esp + 0x288]
mov dword [esp], eax
call fcn.00408690
jmp 0x411814
mov eax, dword [esp + 0x27c]
mov dword [esp], eax
call fcn.00408690
lea ecx, [esp + 0x3e0]
call fcn.00409540
jmp 0x411831
jmp 0x411833
sub esi, 0xffffffff
jmp 0x40eb32
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret