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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x620
mov esi, dword [ebp + 8]
mov al, byte [esp + 0x150]
mov byte [esp + 0x154], al
mov byte [esp + 0x368], 0x2f
mov byte [esp + 0x369], 0x89
mov eax, 2
mov byte [esp + eax + 0x368], 0
add eax, 1
cmp eax, 8
jne 0x40dde5
xor eax, eax
cmp eax, 8
jae 0x40de19
mov cl, byte [esp + eax + 0x368]
mov dl, al
add dl, 0xe2
xor dl, cl
add dl, 0x96
mov byte [esp + eax + 0x368], dl
add eax, 1
jmp 0x40ddf7
lea eax, [esp + 0x368]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.00401960
mov ebx, eax
cmp ebx, 0
jne 0x40de3a
xor eax, eax
jmp 0x410956
xor edi, edi
jmp 0x40de3e
mov dword [esp], ebx
call fcn.00401b80
cmp edi, eax
jb 0x40de51
mov al, 1
jmp 0x410956
mov dword [esp], ebx
mov dword [esp + 4], edi
call fcn.00401b90
mov dword [esp + 0x24], eax
mov al, byte [esp + 0x14c]
mov byte [esp + 0x158], al
mov byte [esp + 0x360], 0xd8
mov byte [esp + 0x361], 0x47
mov eax, 2
mov byte [esp + eax + 0x360], 0
add eax, 1
cmp eax, 8
jne 0x40de84
mov dword [esp + 0x28], edi
xor eax, eax
cmp eax, 8
jae 0x40defb
movzx edx, byte [esp + eax + 0x360]
mov edi, eax
add edi, 0x519255f1
mov ecx, 0xae6daa0e
sub ecx, eax
and ecx, 0x8fbd2889
and edi, 0x7042d776
or ecx, edi
xor ecx, edx
mov edx, ecx
and edx, 0x4a
mov edi, ecx
and edi, 0xb5
and ecx, 0xb5
xor ecx, 0xcb
xor edi, 0xcb
and ecx, edi
xor edx, 8
add edx, ecx
add dl, 1
mov byte [esp + eax + 0x360], dl
add eax, 1
jmp 0x40de9a
lea eax, [esp + 0x360]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401b20
cmp eax, 0
setne al
xor al, 0xff
test al, 1
mov edi, dword [esp + 0x28]
jne 0x40df2c
jmp 0x40df31
jmp 0x410946
mov al, byte [esp + 0x148]
mov byte [esp + 0x15c], al
mov byte [esp + 0x5c], 0xcc
mov byte [esp + 0x5d], 0x71
mov eax, 2
mov byte [esp + eax + 0x5c], 0
add eax, 1
cmp eax, 4
jne 0x40df4e
mov dword [esp + 0x2c], ebx
xor eax, eax
cmp eax, 4
jae 0x40dfbe
mov dl, byte [esp + eax + 0x5c]
mov ecx, eax
add ecx, 0xce172114
mov edi, 0x31e8deeb
sub edi, eax
and edi, 0x573178c6
mov ebx, ecx
and ebx, 0xa8ce8739
or edi, ebx
mov ebx, edi
and ebx, 0x81
xor ebx, 0xfe
and edi, 0x81
xor edi, 0xfe
and edi, ebx
xor edi, 0xffffffff
and ecx, 0x7e
or ecx, edi
xor cl, dl
xor cl, 0x81
add cl, 0x9c
mov byte [esp + eax + 0x5c], cl
add eax, 1
jmp 0x40df61
lea eax, [esp + 0x5c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004018f0
fnstcw word [esp + 0x6a]
movzx eax, word [esp + 0x6a]
or eax, 0xc00
mov word [esp + 0x222], ax
fldcw word [esp + 0x222]
fistp dword [esp + 0x3d4]
fldcw word [esp + 0x6a]
mov eax, dword [esp + 0x3d4]
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
mov ecx, eax
sub ecx, 3
ja 0x410944
mov eax, dword [eax*4 + 0x4402bc]
jmp eax
mov al, byte [esp + 0x144]
mov byte [esp + 0x160], al
mov byte [esp + 0x358], 0xc
mov byte [esp + 0x359], 0x9f
mov eax, 2
mov byte [esp + eax + 0x358], 0
add eax, 1
cmp eax, 6
jne 0x40e040
xor eax, eax
cmp eax, 6
jae 0x40e085
movzx edi, byte [esp + eax + 0x358]
mov ecx, 0x9a
sub ecx, eax
or ecx, edi
mov edx, 0x9a
sub edx, eax
and edx, edi
xor ecx, 0xffffffff
or edx, ecx
add dl, 7
mov byte [esp + eax + 0x358], dl
add eax, 1
jmp 0x40e052
lea eax, [esp + 0x358]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401b20
cmp eax, 0
mov edi, dword [esp + 0x28]
je 0x40e3de
mov al, byte [esp + 0x138]
mov byte [esp + 0x164], al
mov byte [esp + 0x13c], 0x4d
mov byte [esp + 0x13d], 0x49
mov byte [esp + 0x13e], 0x4e
mov byte [esp + 0x13f], 0x4f
mov eax, 4
mov byte [esp + eax + 0x13c], 0
add eax, 1
cmp eax, 8
jne 0x40e0e4
xor eax, eax
cmp eax, 8
jae 0x40e15a
movzx ecx, byte [esp + eax + 0x13c]
mov edx, eax
and edx, 0x85f3b510
mov ebx, eax
and ebx, 0x85f3b510
mov edi, eax
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, eax
and ebx, 2
or edx, 2
imul edx, ebx
mov ebx, dword [esp + 0x2c]
add edx, edi
mov edi, eax
xor edi, 0x7a0c4aed
sub edi, edx
xor edi, ecx
mov ecx, 0x623d76a4
sub ecx, edi
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x13c], cl
add eax, 1
jmp 0x40e0f6
mov eax, dword [esp + 0x13c]
mov cl, byte [esp + 0x134]
mov byte [esp + 0x168], cl
mov byte [esp + 0x350], 0x2d
mov byte [esp + 0x351], 0x81
mov ecx, 2
mov byte [esp + ecx + 0x350], 0
add ecx, 1
cmp ecx, 5
jne 0x40e184
xor ecx, ecx
cmp ecx, 5
jae 0x40e1cb
movzx edx, byte [esp + ecx + 0x350]
mov edi, 0xcbaa06df
sub edi, ecx
xor edi, edx
mov edx, 0xfa52225e
sub edx, edi
mov edi, edx
shl edi, 1
and edi, 2
xor edx, 1
add edx, edi
mov byte [esp + ecx + 0x350], dl
add ecx, 1
jmp 0x40e196
mov edi, dword [esp + 0x28]
jmp 0x40e1d1
lea ecx, [esp + 0x350]
mov edx, dword [esp + 0x24]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.00401b20
cmp eax, 0
je 0x40e3de
mov al, byte [esp + 0x130]
mov byte [esp + 0x16c], al
mov byte [esp + 0x348], 0x96
mov byte [esp + 0x349], 0x1f
mov eax, 2
mov byte [esp + eax + 0x348], 0
add eax, 1
cmp eax, 7
jne 0x40e218
xor eax, eax
jmp 0x40e22c
cmp eax, 7
jae 0x40e268
movzx ecx, byte [esp + eax + 0x348]
mov edx, eax
add edx, 0xe92983c5
xor edx, ecx
xor ecx, ecx
sub ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xb4
xor ecx, 0x25
add ecx, 1
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0x348], cl
add eax, 1
jmp 0x40e22c
lea eax, [esp + 0x348]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401b20
cmp eax, 0
je 0x40e3de
mov al, byte [esp + 0x12c]
mov byte [esp + 0x170], al
mov byte [esp + 0x58], 0xe0
mov byte [esp + 0x59], 0x5b
mov eax, 2
mov byte [esp + eax + 0x58], 0
add eax, 1
cmp eax, 4
jne 0x40e2ad
xor eax, eax
cmp eax, 4
jae 0x40e2e6
mov dl, byte [esp + eax + 0x58]
movzx edi, dl
mov ecx, eax
add ecx, 0x7deb47ef
mov ebx, ecx
and ebx, edi
shl ebx, 1
sub ecx, ebx
add cl, dl
add cl, 0x55
mov byte [esp + eax + 0x58], cl
add eax, 1
jmp 0x40e2bc
lea eax, [esp + 0x58]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401b20
cmp eax, 0
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
je 0x40e3de
mov al, byte [esp + 0x128]
mov byte [esp + 0x174], al
mov byte [esp + 0x264], 0xa2
mov byte [esp + 0x265], 0x96
mov byte [esp + 0x266], 0x76
mov eax, 3
mov byte [esp + eax + 0x264], 0
add eax, 1
cmp eax, 6
jne 0x40e33e
xor eax, eax
cmp eax, 6
jae 0x40e3a5
movzx ecx, byte [esp + eax + 0x264]
mov edx, eax
and edx, 0x7b859ebe
mov ebx, eax
and ebx, 0x7b859ebe
xor ebx, 0xffffffff
mov edi, eax
add edi, 0x7b859ebf
add edi, ebx
add edi, edx
mov ebx, edi
xor ebx, 0xffffffff
mov edx, ecx
or edx, ebx
xor edi, 0xffffffff
and ecx, edi
mov edi, ecx
shl edi, 1
xor edi, 0xffffffff
add ecx, edi
and edx, ecx
mov cl, 0x49
sub cl, dl
mov byte [esp + eax + 0x264], cl
add eax, 1
jmp 0x40e350
lea eax, [esp + 0x264]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401b20
cmp eax, 0
setne al
xor al, 0xff
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
test al, 1
jne 0x410944
jmp 0x40e3e3
jmp 0x410944
mov al, byte [esp + 0x124]
mov byte [esp + 0x178], al
mov byte [esp + 0x340], 0x14
mov byte [esp + 0x341], 0x6b
mov eax, 2
mov byte [esp + eax + 0x340], 0
add eax, 1
cmp eax, 7
jne 0x40e406
xor eax, eax
cmp eax, 7
jae 0x40e43a
mov cl, byte [esp + eax + 0x340]
mov dl, al
add dl, 0xe7
xor dl, cl
add dl, 0x7d
mov byte [esp + eax + 0x340], dl
add eax, 1
jmp 0x40e418
lea eax, [esp + 0x340]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x29c], eax
jmp 0x40e45a
mov al, byte [esp + 0x120]
mov byte [esp + 0x17c], al
mov byte [esp + 0x338], 0xc5
mov byte [esp + 0x339], 0x31
mov eax, 2
mov byte [esp + eax + 0x338], 0
add eax, 1
cmp eax, 8
jne 0x40e47d
xor eax, eax
cmp eax, 8
jae 0x40e4b1
mov cl, byte [esp + eax + 0x338]
mov dl, al
add dl, 0xf4
xor dl, cl
add dl, 0x3c
mov byte [esp + eax + 0x338], dl
add eax, 1
jmp 0x40e48f
lea eax, [esp + 0x338]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401960
mov dword [esp + 0x2b0], eax
mov al, byte [esp + 0x11c]
mov byte [esp + 0x180], al
mov byte [esp + 0x330], 0xa
mov byte [esp + 0x331], 0x8b
mov eax, 2
mov byte [esp + eax + 0x330], 0
add eax, 1
cmp eax, 8
jne 0x40e4f2
xor eax, eax
cmp eax, 8
jae 0x40e58f
movzx edi, byte [esp + eax + 0x330]
mov ecx, edi
xor ecx, 0xffffffff
or ecx, 0x7e7f3743
mov edx, 0xe580a3dc
sub edx, eax
and edx, 0x8180c8bc
mov dword [esp + 0x374], edx
mov edx, 0x6580a3dc
sub edx, eax
mov ebx, 0x6580a3dc
sub ebx, eax
and edx, ebx
and edx, 0x7e7f3743
add ecx, edi
add ecx, 1
and edi, 0xbc
xor edi, 0x8180c8bc
or ecx, edi
or edx, dword [esp + 0x374]
mov edi, edx
xor edi, 0xbc
mov ebx, ecx
or ebx, edi
xor edx, 0xbc
and edx, ecx
xor ebx, 0xffffffff
or edx, ebx
add dl, 0x51
mov byte [esp + eax + 0x330], dl
add eax, 1
jmp 0x40e504
lea eax, [esp + 0x330]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x298], eax
mov al, byte [esp + 0x118]
mov byte [esp + 0x184], al
mov byte [esp + 0x328], 0xe0
mov byte [esp + 0x329], 0xbb
mov eax, 2
mov byte [esp + eax + 0x328], 0
add eax, 1
cmp eax, 8
jne 0x40e5d0
xor eax, eax
cmp eax, 8
jae 0x40e604
mov cl, byte [esp + eax + 0x328]
mov dl, al
add dl, 0x9f
xor dl, cl
add dl, 0xe5
mov byte [esp + eax + 0x328], dl
add eax, 1
jmp 0x40e5e2
lea eax, [esp + 0x328]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004018f0
fnstcw word [esp + 0x68]
movzx eax, word [esp + 0x68]
or eax, 0xc00
mov word [esp + 0x220], ax
fldcw word [esp + 0x220]
fistp dword [esp + 0x3c8]
fldcw word [esp + 0x68]
mov eax, dword [esp + 0x3c8]
mov dword [esp + 0x3b0], eax
mov al, byte [esp + 0x114]
mov byte [esp + 0x188], al
mov byte [esp + 0x25c], 0x5e
mov byte [esp + 0x25d], 0x42
mov byte [esp + 0x25e], 0xf2
mov eax, 3
mov byte [esp + eax + 0x25c], 0
add eax, 1
cmp eax, 7
jne 0x40e67c
xor eax, eax
cmp eax, 7
jae 0x40e6c1
movzx edx, byte [esp + eax + 0x25c]
mov ecx, eax
add ecx, 0x54
mov edi, edx
xor edi, 0xffffffff
and ecx, edi
mov edi, 0xab
sub edi, eax
and edi, edx
or ecx, edi
add cl, 0x5c
mov byte [esp + eax + 0x25c], cl
add eax, 1
jmp 0x40e68e
lea eax, [esp + 0x25c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004018f0
fnstcw word [esp + 0x66]
movzx eax, word [esp + 0x66]
or eax, 0xc00
mov word [esp + 0x21e], ax
fldcw word [esp + 0x21e]
fistp dword [esp + 0x3c4]
fldcw word [esp + 0x66]
mov eax, dword [esp + 0x3c4]
mov dword [esp + 0x3a4], eax
mov al, byte [esp + 0x110]
mov byte [esp + 0x18c], al
mov byte [esp + 0x38], 0xb2
mov byte [esp + 0x39], 0xb5
mov byte [esp + 0x3a], 0x1e
mov eax, 3
mov byte [esp + eax + 0x38], 0
add eax, 1
cmp eax, 4
jne 0x40e730
xor eax, eax
cmp eax, 4
jae 0x40e75b
mov cl, byte [esp + eax + 0x38]
mov dl, al
add dl, 0xfa
xor dl, cl
add dl, 0x1e
mov byte [esp + eax + 0x38], dl
add eax, 1
jmp 0x40e73f
lea eax, [esp + 0x38]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004019c0
cmp eax, 0
setg byte [esp + 0x33]
mov eax, dword [esp + 0x29c]
mov dword [esp], eax
call fcn.00412780
mov ebx, eax
mov dword [esp + 0x274], ebx
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40e7aa
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x29c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ab70
xor eax, eax
lea eax, [esp + 0x10c]
mov dword [esp], 0
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x274]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x44a7f0]
sub esp, 0x18
mov eax, dword [esp + 0x10c]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40e82e
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
mov ecx, dword [0x44a7f0]
mov dword [esp + 0x370], ecx
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x10c]
xor edx, edx
mov dword [esp], 0
mov dword [esp + 4], edi
mov edx, dword [esp + 0x274]
mov dword [esp + 8], edx
mov dword [esp + 0x290], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [esp + 0x10c]
mov dword [esp + 0x14], eax
call dword [esp + 0x370]
sub esp, 0x18
mov dword [esp], edi
call fcn.00408240
jmp 0x40e894
mov eax, dword [esp + 0x298]
mov dword [esp], eax
call fcn.00412780
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40e8c0
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
xor ecx, ecx
mov dword [esp + 0x288], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esp + 0x298]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ab70
lea ecx, [esp + 0x590]
mov dword [esp], 1
call fcn.00408ef0
sub esp, 4
mov dword [esp + 0x78], 0
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x2b0]
mov dword [esp], eax
call fcn.00401b80
cmp dword [esp + 0x78], eax
setb al
test al, 1
jne 0x40e933
jmp 0x40e92e
jmp 0x40ea25
mov eax, dword [esp + 0x2b0]
mov dword [esp], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 4], eax
call fcn.00401b60
mov dword [esp], eax
call fcn.004018d0
mov edi, eax
cmp edi, 0
sete al
test al, 1
jne 0x40e960
jmp 0x40e969
mov edi, dword [esp + 0x28]
jmp 0x40ea1b
mov dword [esp], edi
call fcn.00412780
mov ebx, eax
mov eax, ebx
and eax, 1
or ebx, 1
add ebx, eax
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40e995
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov edi, eax
mov dword [esp + 0xc], 0
call fcn.0040ab70
mov eax, dword [esp + 0x3b0]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x3a4]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edi
mov eax, dword [esp + 0x290]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x288]
mov dword [esp + 4], eax
lea eax, [esp + 0x590]
mov dword [esp], eax
xor eax, eax
mov cl, byte [esp + 0x33]
mov al, cl
and eax, 1
mov dword [esp + 0x18], eax
call fcn.0041c950
mov dword [esp], edi
call fcn.00408240
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
jmp 0x40ea19
jmp 0x40ea1b
add dword [esp + 0x78], 1
jmp 0x40e912
mov eax, dword [esp + 0x288]
mov dword [esp], eax
call fcn.00408240
mov eax, dword [esp + 0x290]
jmp 0x40ea3d
mov dword [esp], eax
call fcn.00408240
lea ecx, [esp + 0x590]
call fcn.00409950
lea ecx, [esp + 0x590]
call fcn.00408fd0
jmp 0x410944
mov al, byte [esp + 0x108]
mov byte [esp + 0x190], al
mov byte [esp + 0x320], 0x67
mov byte [esp + 0x321], 0xc1
mov eax, 2
mov byte [esp + eax + 0x320], 0
add eax, 1
cmp eax, 5
jne 0x40ea85
xor eax, eax
cmp eax, 5
jae 0x40ead3
movzx edi, byte [esp + eax + 0x320]
mov ecx, 0xcf
sub ecx, eax
or ecx, edi
mov edx, 0xcf
sub edx, eax
mov ebx, 0xcf
sub ebx, eax
or edx, ebx
and edx, edi
xor ecx, 0xffffffff
or edx, ecx
add dl, 0x10
mov byte [esp + eax + 0x320], dl
add eax, 1
jmp 0x40ea97
lea eax, [esp + 0x320]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401b20
cmp eax, 0
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
je 0x40ee41
mov al, byte [esp + 0x104]
mov byte [esp + 0x194], al
mov byte [esp + 0x318], 0x8c
mov byte [esp + 0x319], 0x1f
mov eax, 2
mov byte [esp + eax + 0x318], 0
add eax, 1
cmp eax, 8
jne 0x40eb26
xor eax, eax
cmp eax, 8
jae 0x40eb6a
movzx edx, byte [esp + eax + 0x318]
mov ecx, eax
add ecx, 0x33ee0c5
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x4c
xor ecx, 0x26
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x318], cl
add eax, 1
jmp 0x40eb38
lea eax, [esp + 0x318]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401b20
cmp eax, 0
je 0x40ee41
mov al, byte [esp + 0x100]
mov byte [esp + 0x198], al
mov byte [esp + 0x310], 0x4d
mov byte [esp + 0x311], 0xf9
mov eax, 2
mov byte [esp + eax + 0x310], 0
add eax, 1
cmp eax, 8
jne 0x40ebb5
xor eax, eax
cmp eax, 8
jae 0x40ec35
movzx ecx, byte [esp + eax + 0x310]
mov edx, eax
and edx, 0xd2f762d4
mov ebx, eax
and ebx, 0xd2f762d4
mov edi, eax
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, eax
and ebx, 2
or edx, 2
imul edx, ebx
add edx, edi
mov edi, eax
xor edi, 0xd2f762d6
add edi, edx
mov edx, edi
xor edx, ecx
xor edi, ecx
and edx, edi
add edx, 0xe12b11d1
mov ecx, edx
shl ecx, 1
and ecx, 2
xor edx, 1
add edx, ecx
mov byte [esp + eax + 0x310], dl
mov ecx, eax
xor ecx, 1
shl eax, 1
and eax, 2
add eax, ecx
jmp 0x40ebc7
lea eax, [esp + 0x310]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 5
call fcn.00401b20
cmp eax, 0
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
je 0x40ee41
mov al, byte [esp + 0xfc]
mov byte [esp + 0x19c], al
mov byte [esp + 0x308], 0xe6
mov byte [esp + 0x309], 0x79
mov eax, 2
mov byte [esp + eax + 0x308], 0
add eax, 1
cmp eax, 8
jne 0x40ec88
xor eax, eax
jmp 0x40ec9c
cmp eax, 8
jae 0x40ecdc
movzx edx, byte [esp + eax + 0x308]
mov ecx, eax
add ecx, 0xa4d62e6a
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
mov edx, ecx
shl edx, 1
and edx, 0xda
xor ecx, 0xed
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x308], cl
add eax, 1
jmp 0x40ec9c
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.00401b20
mov edi, dword [esp + 0x28]
cmp eax, 0
je 0x40ee41
mov al, byte [esp + 0xf8]
mov byte [esp + 0x1a0], al
mov byte [esp + 0x54], 0xc0
mov byte [esp + 0x55], 0x6b
mov eax, 2
mov byte [esp + eax + 0x54], 0
add eax, 1
cmp eax, 4
jne 0x40ed25
xor eax, eax
cmp eax, 4
jae 0x40ed6a
movzx edx, byte [esp + eax + 0x54]
mov ecx, eax
add ecx, 0xf784bd97
xor ecx, edx
mov edi, ecx
shl edi, 1
mov edx, 2
sub edx, edi
xor ecx, 1
add ecx, 0xc
and edx, 2
xor edx, 2
add edx, ecx
mov byte [esp + eax + 0x54], dl
add eax, 1
jmp 0x40ed34
mov edi, dword [esp + 0x28]
jmp 0x40ed70
lea eax, [esp + 0x54]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401b20
cmp eax, 0
setne al
test al, 1
jne 0x40ed9b
jmp 0x40ee41
mov al, byte [esp + 0xf4]
mov byte [esp + 0x1a4], al
mov byte [esp + 0x254], 0x12
mov byte [esp + 0x255], 0xee
mov byte [esp + 0x256], 0x7e
mov eax, 3
mov byte [esp + eax + 0x254], 0
add eax, 1
cmp eax, 5
jne 0x40edc6
xor eax, eax
jmp 0x40edda
cmp eax, 5
jae 0x40ee0f
mov dl, byte [esp + eax + 0x254]
mov edi, eax
shl edi, 1
and edi, 0xd4
mov ecx, eax
xor ecx, 0xea
add ecx, edi
mov edi, dword [esp + 0x28]
xor cl, dl
add cl, 0x6e
mov byte [esp + eax + 0x254], cl
add eax, 1
jmp 0x40edda
jmp 0x40ee11
lea eax, [esp + 0x254]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
mov dword [esp + 8], 3
call fcn.00401b20
sub eax, 1
mov al, 1
sbb al, 0xff
test al, 1
jne 0x410944
jmp 0x40ee46
jmp 0x410944
mov al, byte [esp + 0xf0]
mov byte [esp + 0x1a8], al
mov byte [esp + 0x300], 0xbd
mov byte [esp + 0x301], 0x5b
mov eax, 2
mov byte [esp + eax + 0x300], 0
add eax, 1
cmp eax, 7
jne 0x40ee69
xor eax, eax
cmp eax, 7
jae 0x40eeb7
mov cl, byte [esp + eax + 0x300]
movzx edi, cl
mov ebx, eax
shl ebx, 1
and ebx, 0x3bd3a1e
mov edx, eax
xor edx, 0x81de9d0f
add edx, ebx
mov ebx, edx
and ebx, edi
shl ebx, 1
sub edx, ebx
add dl, cl
add dl, 0xb5
mov byte [esp + eax + 0x300], dl
add eax, 1
jmp 0x40ee7b
lea eax, [esp + 0x300]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x2a4], eax
mov al, byte [esp + 0xec]
mov byte [esp + 0x1ac], al
mov byte [esp + 0x2f8], 0x6c
mov byte [esp + 0x2f9], 0x9b
mov eax, 2
mov byte [esp + eax + 0x2f8], 0
add eax, 1
cmp eax, 8
jne 0x40eef8
xor eax, eax
cmp eax, 8
jae 0x40ef4f
movzx edx, byte [esp + eax + 0x2f8]
mov ecx, eax
add ecx, 0x31dacbdb
mov edi, eax
add edi, 0xdb
mov ebx, ecx
or ebx, edi
and ebx, edx
add ecx, edx
shl ebx, 1
mov edx, ecx
sub edx, ebx
and ecx, 1
or edx, 1
add edx, 0xb8
add edx, ecx
mov byte [esp + eax + 0x2f8], dl
add eax, 1
jmp 0x40ef0a
lea eax, [esp + 0x2f8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov cl, byte [esp + 0xe8]
mov byte [esp + 0x1b0], cl
mov byte [esp + 0x2f0], 0x3f
mov byte [esp + 0x2f1], 0x8b
mov ecx, 2
mov byte [esp + ecx + 0x2f0], 0
add ecx, 1
cmp ecx, 6
jne 0x40ef89
mov dword [esp + 0x3b8], eax
xor eax, eax
cmp eax, 6
jae 0x40f001
movzx edx, byte [esp + eax + 0x2f0]
mov edi, edx
shl edi, 1
xor edi, 0xffffffff
add edi, edx
mov ebx, eax
add ebx, 0x67a62b64
mov ecx, 0x9859d49c
sub ecx, eax
or ecx, edi
add ecx, ebx
mov edi, 0x9c
sub edi, eax
and edi, edx
or ecx, edi
mov edx, ecx
and edx, 0xf0
xor edx, 0xf0
and ecx, 0xf
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0x2f0], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40efa2
lea eax, [esp + 0x2f0]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401960
mov dword [esp + 0x2bc], eax
mov al, byte [esp + 0xe4]
mov byte [esp + 0x1b4], al
mov byte [esp + 0x2e8], 0x4e
mov byte [esp + 0x2e9], 0xc9
mov eax, 2
mov byte [esp + eax + 0x2e8], 0
add eax, 1
cmp eax, 8
jne 0x40f042
xor edx, edx
cmp edx, 8
jae 0x40f0ef
movzx ecx, byte [esp + edx + 0x2e8]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x3c]
xor edx, 0x6ad0ad1
mov edi, dword [esp + 0x3c]
or edi, 0x7952f52e
and edi, edx
shl edi, 1
mov ebx, dword [esp + 0x3c]
shl ebx, 1
and ebx, 0xf2a5ea5c
mov edx, dword [esp + 0x3c]
add edx, 0xf952f52e
sub edx, ebx
add edx, edi
mov edi, edx
and edi, ecx
mov eax, edi
and eax, 0xfd
mov ebx, edi
or ebx, 0xfffffffd
add ebx, 1
imul ebx, eax
mov eax, edi
and eax, 2
or edi, 2
imul edi, eax
sub ebx, edi
add edx, ecx
add edx, ebx
mov ecx, edx
add ecx, 0x19
mov eax, 6
sub eax, edx
mov edx, dword [esp + 0x3c]
and eax, 9
and ecx, 0xf6
sub ecx, eax
add cl, 0xa
mov byte [esp + edx + 0x2e8], cl
add edx, 1
jmp 0x40f054
lea eax, [esp + 0x2e8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov edi, eax
mov al, byte [esp + 0xe0]
mov byte [esp + 0x1b8], al
mov byte [esp + 0x2e0], 0xa8
mov byte [esp + 0x2e1], 0xf
mov eax, 2
mov byte [esp + eax + 0x2e0], 0
add eax, 1
cmp eax, 8
jne 0x40f12b
xor eax, eax
cmp eax, 8
jae 0x40f175
movzx edx, byte [esp + eax + 0x2e0]
mov ecx, eax
add ecx, 0x289b773d
xor ecx, edx
add ecx, 0x9fb117a0
mov edx, ecx
shl edx, 1
and edx, 0x5c
xor ecx, 0x2e
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x2e0], cl
add eax, 1
jmp 0x40f13d
lea eax, [esp + 0x2e0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004018f0
fnstcw word [esp + 0x64]
movzx eax, word [esp + 0x64]
or eax, 0xc00
mov word [esp + 0x21c], ax
fldcw word [esp + 0x21c]
fistp dword [esp + 0x3d0]
fldcw word [esp + 0x64]
mov eax, dword [esp + 0x3d0]
mov dword [esp + 0x3c0], eax
mov al, byte [esp + 0xdc]
mov byte [esp + 0x1bc], al
mov byte [esp + 0x24c], 0x6a
mov byte [esp + 0x24d], 0x7a
mov byte [esp + 0x24e], 6
mov eax, 3
mov byte [esp + eax + 0x24c], 0
add eax, 1
cmp eax, 8
jne 0x40f1ed
mov dword [esp + 0x3bc], edi
xor eax, eax
cmp eax, 8
jae 0x40f251
mov dl, byte [esp + eax + 0x24c]
mov ecx, eax
add ecx, 0x5eba3b81
mov ebx, ecx
shl ebx, 1
mov edi, eax
add edi, 0x5eba3b80
sub edi, ebx
mov ebx, edi
xor ebx, 0xfa
or edi, 5
and edi, ebx
and ecx, 0xfa
or ecx, edi
xor cl, dl
xor cl, 5
add cl, 0x7b
mov byte [esp + eax + 0x24c], cl
add eax, 1
jmp 0x40f206
lea eax, [esp + 0x24c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004018f0
fnstcw word [esp + 0x62]
movzx eax, word [esp + 0x62]
or eax, 0xc00
mov word [esp + 0x21a], ax
fldcw word [esp + 0x21a]
fistp dword [esp + 0x3cc]
fldcw word [esp + 0x62]
mov eax, dword [esp + 0x3cc]
mov dword [esp + 0x3b4], eax
mov eax, dword [esp + 0x2a4]
mov dword [esp], eax
call fcn.00412780
mov edi, eax
sub edi, 0x3fb2428a
add edi, 1
add edi, 0x3fb2428a
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f2d6
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
mov ebx, eax
xor eax, eax
mov dword [esp], ebx
mov dword [esp + 4], edi
mov eax, dword [esp + 0x2a4]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ab70
lea ecx, [esp + 0x3e8]
mov dword [esp], ebx
call fcn.004127e0
sub esp, 4
mov dword [esp], ebx
call fcn.00408240
mov edi, dword [esp + 0x28]
lea ecx, [esp + 0x3e8]
mov dword [esp], 0x1000
call fcn.00437210
sub esp, 4
cmp eax, 0
mov ebx, dword [esp + 0x2c]
jge 0x40f343
jmp 0x40f9c5
mov dword [esp + 0xd8], 0
mov eax, dword [esp + 0x3e8]
mov dword [esp + 0x388], eax
mov al, byte [esp + 0x1c0]
mov byte [esp + 0x218], al
mov byte [esp + 0x1c4], 0x77
mov byte [esp + 0x1c5], 0x76
mov byte [esp + 0x1c6], 0x75
mov byte [esp + 0x1c7], 0x74
mov eax, 4
mov byte [esp + eax + 0x1c4], 0
add eax, 1
cmp eax, 5
jne 0x40f38f
xor eax, eax
cmp eax, 5
jae 0x40f3c3
mov cl, byte [esp + eax + 0x1c4]
mov dl, al
add dl, 0x94
xor dl, cl
add dl, 0x1c
mov byte [esp + eax + 0x1c4], dl
add eax, 1
jmp 0x40f3a1
mov eax, dword [esp + 0x1c4]
mov dword [esp + 0x7c], eax
xor ebx, ebx
mov ecx, 2
cmp ebx, dword [0x44a7f4]
jb 0x40f3e2
jmp 0x40f482
mov edx, dword [0x44a7f8]
mov dword [esp + 0x26c], ebx
cmp dword [edx + ebx*8], 0xae6e2b0b
sete bl
xor ecx, ecx
mov byte [esp + 0x31], bl
test bl, 1
jne 0x40f406
jmp 0x40f46a
mov ecx, dword [esp + 0x26c]
mov edx, dword [edx + ecx*8 + 4]
mov ecx, 2
cmp edx, dword [esp + 0x7c]
je 0x40f46a
mov eax, dword [0x44a7fc]
xor ecx, ecx
lea ecx, [esp + 0xd8]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esp + 0x388]
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.00439fa0
mov ecx, 1
test byte [esp + 0x31], 1
je 0x40f473
jmp 0x40f482
mov ebx, dword [esp + 0x26c]
add ebx, 1
jmp 0x40f3d0
cmp ecx, 2
je 0x40f48b
mov dword [esp + 0x7c], eax
mov al, byte [esp + 0xcc]
mov byte [esp + 0x1cc], al
mov byte [esp + 0xd0], 0xf8
mov byte [esp + 0xd1], 0xff
mov byte [esp + 0xd2], 0xfe
mov byte [esp + 0xd3], 0x31
mov eax, 4
mov byte [esp + eax + 0xd0], 0
add eax, 1
cmp eax, 7
jne 0x40f4be
xor eax, eax
cmp eax, 7
jae 0x40f520
movzx ebx, byte [esp + eax + 0xd0]
mov ecx, 0xaa
sub ecx, eax
or ecx, ebx
mov edx, 0xaa
sub edx, eax
mov edi, 0xaa
sub edi, eax
or edx, edi
mov edi, dword [esp + 0x28]
and edx, ebx
xor ecx, 0xffffffff
or edx, ecx
add dl, 0x57
mov byte [esp + eax + 0xd0], dl
add eax, 0x9e28782d
mov ecx, eax
shl ecx, 1
and ecx, 0x28
xor eax, 0x61d787d4
add eax, ecx
jmp 0x40f4d0
mov eax, dword [esp + 0xd0]
cmp dword [esp + 0x7c], eax
mov ebx, dword [esp + 0x2c]
jne 0x40f9c5
mov eax, dword [esp + 0xd8]
add eax, 2
mov dword [esp], eax
call fcn.00436e30
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0xd8]
add eax, 2
mov dword [esp + 0x390], eax
mov eax, dword [esp + 0x3e8]
mov dword [esp + 0x38c], eax
mov al, byte [esp + 0x1d0]
mov byte [esp + 0x214], al
mov byte [esp + 0x1d4], 0x77
mov byte [esp + 0x1d5], 0x76
mov byte [esp + 0x1d6], 0x75
mov byte [esp + 0x1d7], 0x74
mov eax, 4
mov byte [esp + eax + 0x1d4], 0
add eax, 1
cmp eax, 5
jne 0x40f5a0
xor eax, eax
cmp eax, 5
jae 0x40f5d4
mov cl, byte [esp + eax + 0x1d4]
mov dl, al
add dl, 0x94
xor dl, cl
add dl, 0x1c
mov byte [esp + eax + 0x1d4], dl
add eax, 1
jmp 0x40f5b2
mov edx, dword [esp + 0x1d4]
xor edi, edi
mov ecx, 2
cmp edi, dword [0x44a7f4]
jb 0x40f5f3
mov edi, dword [esp + 0x28]
jmp 0x40f694
mov dword [esp + 0x74], edx
mov edx, dword [0x44a7f8]
cmp dword [edx + edi*8], 0xae6e2b0b
sete bl
xor ecx, ecx
test bl, 1
jne 0x40f610
jmp 0x40f670
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, dword [esp + 0x74]
je 0x40f670
mov eax, dword [0x44a7fc]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esp + 0x38c]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esp + 0x80]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x390]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
call fcn.00439fa0
mov ecx, 1
test bl, 1
je 0x40f67f
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x74]
jmp 0x40f694
mov ecx, edi
shl ecx, 1
and ecx, 2
xor edi, 1
add edi, ecx
mov edx, dword [esp + 0x74]
jmp 0x40f5dd
cmp ecx, 2
je 0x40f69b
mov edx, eax
cmp edx, 0
setge al
test al, 1
jne 0x40f6aa
jmp 0x40f9b2
mov edi, dword [esp + 0x3b8]
mov dword [esp], edi
call fcn.00412780
mov ebx, eax
mov dword [esp + 0x384], ebx
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f6dd
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
xor ecx, ecx
mov dword [esp + 0x270], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ab70
mov ecx, dword [esp + 0x80]
mov edi, ecx
add edi, 4
mov eax, dword [ecx + 4]
mov cx, word [ecx]
jmp 0x40f71a
movzx ecx, cx
shr ecx, 1
mov edx, ecx
xor edx, 0xffffffff
and edx, 1
and ecx, 0xfffffffe
sub ecx, edx
shl ecx, 1
add eax, ecx
mov ebx, eax
cmp ebx, dword [edi]
jb 0x40f745
movzx ecx, word [ebx]
cmp ecx, 0x5c
jne 0x40f740
jmp 0x40f749
add ebx, 0xfffffffe
jmp 0x40f732
mov ebx, eax
jmp 0x40f749
mov eax, dword [edi]
xor eax, 0xffffffff
add ebx, eax
add ebx, 1
sar ebx, 1
mov eax, ebx
add eax, dword [esp + 0x384]
add eax, 1
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f777
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
mov ecx, dword [edi]
mov esi, eax
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
call fcn.00412810
mov dword [esp], eax
mov eax, dword [esp + 0x270]
mov dword [esp + 4], eax
call fcn.00409de0
mov edi, eax
jmp 0x40f7aa
mov eax, dword [esp + 0x270]
mov dword [esp], eax
call fcn.00408240
sub edi, esi
sar edi, 1
mov eax, edi
and eax, 1
shl eax, 1
xor edi, 1
add edi, eax
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f7e1
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
mov dword [esp], esi
mov dword [esp + 0x284], eax
mov dword [esp + 4], eax
call fcn.00435320
mov dword [esp], esi
call fcn.00408240
mov ebx, dword [esp + 0x3bc]
mov dword [esp], ebx
call fcn.00412780
xor ecx, ecx
sub ecx, eax
add ecx, 0xffffffff
xor edi, edi
sub edi, ecx
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f836
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
xor ecx, ecx
mov dword [esp + 0x278], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040ab70
lea ecx, [esp + 0x508]
mov dword [esp], 1
call fcn.00408ef0
sub esp, 4
xor edi, edi
mov eax, dword [esp + 0x2bc]
mov dword [esp], eax
call fcn.00401b80
cmp edi, eax
setb al
test al, 1
jne 0x40f896
jmp 0x40f891
jmp 0x40f971
mov eax, dword [esp + 0x2bc]
mov dword [esp], eax
mov dword [esp + 0x37c], edi
mov dword [esp + 4], edi
call fcn.00401b60
mov dword [esp], eax
call fcn.004018d0
mov ebx, eax
cmp ebx, 0
jne 0x40f8c4
jmp 0x40f962
mov dword [esp], ebx
call fcn.00412780
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f8e9
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
mov esi, eax
xor eax, eax
mov dword [esp], esi
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040ab70
lea eax, [esp + 0x508]
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x278]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x284]
mov dword [esp + 8], eax
mov edi, esi
mov dword [esp + 0xc], esi
mov eax, dword [esp + 0x3b4]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3c0]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.0041c950
mov dword [esp], edi
call fcn.00408240
jmp 0x40f962
mov edi, dword [esp + 0x37c]
add edi, 1
jmp 0x40f877
mov eax, dword [esp + 0x278]
mov dword [esp], eax
call fcn.00408240
jmp 0x40f982
jmp 0x40f984
mov eax, dword [esp + 0x284]
mov dword [esp], eax
call fcn.00408240
lea ecx, [esp + 0x508]
call fcn.00409950
lea ecx, [esp + 0x508]
call fcn.00408fd0
mov esi, dword [ebp + 8]
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x80]
mov dword [esp], eax
call fcn.00436e70
mov ebx, dword [esp + 0x2c]
lea ecx, [esp + 0x3e8]
call fcn.004128d0
jmp 0x40f9d3
jmp 0x410944
mov al, byte [esp + 0xc8]
mov byte [esp + 0x1dc], al
mov byte [esp + 0x2d8], 0x10
mov byte [esp + 0x2d9], 0xe1
mov eax, 2
mov byte [esp + eax + 0x2d8], 0
add eax, 1
cmp eax, 6
jne 0x40f9fb
xor eax, eax
cmp eax, 6
jae 0x40fa3b
movzx edx, byte [esp + eax + 0x2d8]
mov ecx, eax
add ecx, 0x25156b28
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
add cl, 0x38
mov byte [esp + eax + 0x2d8], cl
add eax, 1
jmp 0x40fa0d
lea eax, [esp + 0x2d8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x280], eax
mov al, byte [esp + 0xc4]
mov byte [esp + 0x1e0], al
mov byte [esp + 0x50], 0xb6
mov byte [esp + 0x51], 0x3f
mov eax, 2
mov byte [esp + eax + 0x50], 0
add eax, 1
cmp eax, 4
jne 0x40fa76
xor eax, eax
cmp eax, 4
jae 0x40facd
movzx edx, byte [esp + eax + 0x50]
mov ecx, eax
add ecx, 0xaa7941f5
mov edi, ecx
and edi, edx
shl edi, 1
mov ebx, edi
xor ebx, 0xffffffff
and ecx, ebx
mov ebx, 0x5586be0a
sub ebx, eax
and edi, ebx
mov ebx, dword [esp + 0x2c]
sub ecx, edi
add ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, 0x36
add ecx, edx
mov byte [esp + eax + 0x50], cl
add eax, 1
jmp 0x40fa85
lea eax, [esp + 0x50]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401890
mov edi, eax
mov edx, dword [esp + 0x280]
test edx, edx
sete al
test edi, edi
sete cl
or al, cl
test al, 1
jne 0x40fafc
jmp 0x40fb05
mov edi, dword [esp + 0x28]
jmp 0x410337
mov dword [esp], edx
call fcn.00412780
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40fb2a
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
xor ecx, ecx
mov dword [esp + 0x2b8], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x280]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ab70
mov dword [esp], edi
call fcn.00412780
xor ecx, ecx
sub ecx, eax
add ecx, 0xffffffff
xor ebx, ebx
sub ebx, ecx
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40fb85
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
xor ecx, ecx
mov dword [esp + 0x2b4], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ab70
mov al, byte [esp + 0xc0]
mov byte [esp + 0x1e4], al
mov byte [esp + 0x2d0], 0x3a
mov byte [esp + 0x2d1], 0x9f
mov eax, 2
mov byte [esp + eax + 0x2d0], 0
add eax, 1
cmp eax, 5
jne 0x40fbd1
xor eax, eax
mov ebx, dword [esp + 0x2c]
cmp eax, 5
jae 0x40fc37
movzx edx, byte [esp + eax + 0x2d0]
mov ecx, eax
add ecx, 0x7483e5a5
mov edi, ecx
and edi, edx
mov esi, edi
and esi, 0xfd
mov ebx, edi
and ebx, 2
xor ebx, 2
imul ebx, esi
mov esi, edi
and esi, 2
or edi, 2
imul edi, esi
add edi, ebx
mov ebx, dword [esp + 0x2c]
add ecx, edx
sub ecx, edi
add cl, 0xc7
mov byte [esp + eax + 0x2d0], cl
add eax, 1
jmp 0x40fbe7
lea eax, [esp + 0x2d0]
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 0x40fcac
mov dword [esp], edi
call fcn.00412780
mov ebx, eax
sub ebx, 0xffffffff
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40fc82
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
xor ecx, ecx
mov dword [esp + 0x70], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ab70
mov ebx, dword [esp + 0x2c]
mov al, byte [esp + 0xbc]
mov byte [esp + 0x1e8], al
mov byte [esp + 0x2c8], 0xa6
mov byte [esp + 0x2c9], 0x31
mov eax, 2
mov byte [esp + eax + 0x2c8], 0
add eax, 1
cmp eax, 8
jne 0x40fccf
xor eax, eax
cmp eax, 8
jae 0x40fd58
movzx edi, byte [esp + eax + 0x2c8]
mov ecx, eax
and ecx, 0x671b09f0
xor ecx, 0x671b09f0
mov edx, eax
and edx, 0x98e4f60f
sub edx, ecx
mov ecx, edx
add ecx, 0x1e32a7fc
add edx, 0xfc
and edx, edi
mov esi, edx
and esi, 0xfd
mov ebx, edx
and ebx, 2
xor ebx, 2
imul ebx, esi
mov esi, edx
and esi, 2
or edx, 2
imul edx, esi
add edx, ebx
mov ebx, dword [esp + 0x2c]
add ecx, edi
mov esi, ecx
xor esi, edx
xor edx, 0xffffffff
and ecx, edx
shl ecx, 1
sub ecx, esi
add cl, 0xc4
mov byte [esp + eax + 0x2c8], cl
add eax, 1
jmp 0x40fce1
lea eax, [esp + 0x2c8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov edi, eax
mov dword [esp + 0x6c], 0
cmp edi, 0
mov esi, dword [ebp + 8]
je 0x40fdd0
mov dword [esp], edi
call fcn.00412780
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40fda6
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
xor ecx, ecx
mov dword [esp + 0x6c], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ab70
mov ebx, dword [esp + 0x2c]
mov al, byte [esp + 0xb8]
mov byte [esp + 0x1ec], al
mov byte [esp + 0x244], 0x65
mov byte [esp + 0x245], 0x59
mov byte [esp + 0x246], 0xc2
mov eax, 3
mov byte [esp + eax + 0x244], 0
add eax, 1
cmp eax, 8
jne 0x40fdfb
xor eax, eax
mov edi, dword [esp + 0x28]
cmp eax, 8
jae 0x40fe5b
movzx edx, byte [esp + eax + 0x244]
mov ecx, eax
add ecx, 0xc136d2b0
xor ecx, edx
add ecx, 0x39ede28f
mov edx, ecx
xor edx, 0x725d4b16
shl ecx, 1
and ecx, 0x1b4569d2
sub ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
add cl, 0x16
mov byte [esp + eax + 0x244], cl
add eax, 1
jmp 0x40fe11
lea eax, [esp + 0x244]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.00401960
xor ecx, ecx
cmp eax, 0
mov esi, 0
je 0x41020f
mov dword [esp + 0x3ac], eax
mov dword [esp], eax
call fcn.00401b80
mov ecx, 0xc
mov dword [esp + 0x48], eax
mul ecx
seto dl
add eax, 4
setb cl
or dl, cl
mov ecx, 0xffffffff
test dl, 1
jne 0x40feaf
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
mov ecx, dword [esp + 0x48]
mov dword [eax], ecx
add eax, 4
cmp ecx, 0
mov dword [esp + 0x2a0], eax
je 0x40fef1
imul ecx, ecx, 0xc
mov edi, eax
add edi, ecx
mov ebx, eax
mov ecx, ebx
call fcn.004128e0
add ebx, 0xc
cmp ebx, edi
jne 0x40fed5
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x48]
jmp 0x40fef1
xor esi, esi
jmp 0x40fef5
cmp esi, ecx
mov eax, dword [esp + 0x3ac]
jb 0x40ff0c
mov esi, dword [esp + 0x2a0]
jmp 0x41020f
mov dword [esp], eax
mov dword [esp + 0x3a8], esi
mov dword [esp + 4], esi
call fcn.00401b90
mov esi, eax
mov al, byte [esp + 0xb4]
mov byte [esp + 0x1f0], al
mov byte [esp + 0x23c], 0xcf
mov byte [esp + 0x23d], 0xb9
mov byte [esp + 0x23e], 0x2a
mov eax, 3
mov byte [esp + eax + 0x23c], 0
add eax, 1
cmp eax, 6
jne 0x40ff4c
xor eax, eax
mov dword [esp + 0x294], esi
cmp eax, 6
jae 0x40ffcf
movzx edx, byte [esp + eax + 0x23c]
mov ecx, eax
add ecx, 0x1f279a77
mov ebx, eax
add ebx, 0x77
and ebx, edx
mov esi, ebx
and esi, 0xfd
mov edi, ebx
and edi, 2
xor edi, 2
imul edi, esi
mov esi, ebx
and esi, 2
or ebx, 2
imul ebx, esi
mov esi, dword [esp + 0x294]
add ebx, edi
mov edi, dword [esp + 0x28]
add ecx, edx
sub ecx, ebx
mov edx, ecx
and edx, 0x54
xor edx, 0x54
and ecx, 0xab
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0x23c], cl
add eax, 1
jmp 0x40ff65
lea eax, [esp + 0x23c]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x39c], eax
mov al, byte [esp + 0xb0]
mov byte [esp + 0x1f4], al
mov byte [esp + 0x234], 0xdd
mov byte [esp + 0x235], 0xcb
mov byte [esp + 0x236], 0x32
mov eax, 3
mov byte [esp + eax + 0x234], 0
add eax, 1
cmp eax, 7
jne 0x410014
xor eax, eax
cmp eax, 7
jae 0x41005b
movzx edx, byte [esp + eax + 0x234]
mov ecx, eax
add ecx, 0x2c2061f4
xor ecx, edx
mov edx, ecx
xor edx, 0xc5
shl ecx, 1
and ecx, 0x74
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0x234], cl
add eax, 1
jmp 0x410026
lea eax, [esp + 0x234]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x394], eax
mov al, byte [esp + 0xa4]
mov byte [esp + 0x1f8], al
mov byte [esp + 0xa8], 0xa8
mov byte [esp + 0xa9], 0xb7
mov byte [esp + 0xaa], 0xb4
mov byte [esp + 0xab], 0x19
mov eax, 4
mov byte [esp + eax + 0xa8], 0
add eax, 1
cmp eax, 7
jne 0x4100a8
xor eax, eax
cmp eax, 7
jae 0x410104
movzx edx, byte [esp + eax + 0xa8]
mov ecx, eax
add ecx, 0xd521217b
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xacb4b130
xor ecx, 0xd65a5898
add ecx, edx
add ecx, 0xd0e4d9b7
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
add cl, 0x49
mov byte [esp + eax + 0xa8], cl
add eax, 1
jmp 0x4100ba
lea eax, [esp + 0xa8]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.004019c0
xor ebx, ebx
cmp eax, 0
setg byte [esp + 0x32]
mov al, byte [esp + 0x98]
mov byte [esp + 0x1fc], al
mov byte [esp + 0x9c], 0x41
mov byte [esp + 0x9d], 0x50
mov byte [esp + 0x9e], 0x47
mov byte [esp + 0x9f], 0xc9
mov eax, 4
mov byte [esp + eax + 0x9c], 0
add eax, 1
cmp eax, 7
jne 0x410154
xor eax, eax
cmp eax, 7
jae 0x4101a0
movzx edx, byte [esp + eax + 0x9c]
mov ecx, eax
add ecx, 0x33
mov esi, edx
xor esi, 0xffffffff
and ecx, esi
mov esi, 0xcc
sub esi, eax
and esi, edx
or ecx, esi
mov esi, dword [esp + 0x294]
add cl, 1
mov byte [esp + eax + 0x9c], cl
add eax, 1
jmp 0x410166
lea eax, [esp + 0x9c]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.004019c0
xor edx, edx
cmp eax, 0
setg dl
mov esi, dword [esp + 0x3a8]
imul eax, esi, 0xc
mov ecx, dword [esp + 0x2a0]
add ecx, eax
mov eax, dword [esp + 0x39c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x394]
mov dword [esp], eax
and edx, 1
mov dword [esp + 0xc], edx
mov al, byte [esp + 0x32]
mov bl, al
and ebx, 1
mov dword [esp + 8], ebx
call fcn.00412900
sub esp, 0x10
add esi, 1
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x48]
jmp 0x40fef5
mov dword [esp + 0x48], ecx
mov eax, dword [esp + 0x2b4]
mov dword [esp + 0x3d8], eax
mov eax, dword [esp + 0x2b8]
mov dword [esp + 0x3dc], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x3e0], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x3e4], eax
lea ecx, [esp + 0x480]
mov dword [esp], 2
call fcn.00408ef0
sub esp, 4
lea eax, [esp + 0x480]
lea ecx, [esp + 0x3d8]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], esi
mov eax, dword [esp + 0x48]
mov dword [esp + 0xc], eax
call fcn.00412f30
lea ecx, [esp + 0x480]
call fcn.00409950
cmp esi, 0
je 0x4102d3
mov ebx, esi
add ebx, 0xfffffffc
imul eax, dword [esi - 4], 0xc
mov edi, esi
add edi, eax
cmp esi, edi
sete al
test al, 1
jne 0x4102c3
jmp 0x4102aa
jmp 0x4102ac
add edi, 0xfffffff4
mov ecx, edi
call fcn.00412a60
cmp edi, esi
sete al
test al, 1
jne 0x4102c1
jmp 0x4102ac
jmp 0x4102c3
mov dword [esp], ebx
call fcn.00408240
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
jmp 0x4102d5
mov eax, dword [esp + 0x2b4]
mov dword [esp], eax
call fcn.00408240
mov esi, dword [ebp + 8]
jmp 0x4102e9
jmp 0x4102eb
mov eax, dword [esp + 0x2b8]
mov dword [esp], eax
call fcn.00408240
cmp dword [esp + 0x70], 0
je 0x41030f
mov eax, dword [esp + 0x70]
mov dword [esp], eax
call fcn.00408240
jmp 0x41030f
cmp dword [esp + 0x6c], 0
sete al
test al, 1
jne 0x41032b
jmp 0x41031d
mov eax, dword [esp + 0x6c]
mov dword [esp], eax
call fcn.00408240
jmp 0x41032b
lea ecx, [esp + 0x480]
call fcn.00408fd0
jmp 0x410944
mov al, byte [esp + 0x94]
mov byte [esp + 0x200], al
mov byte [esp + 0x4c], 0x9c
mov byte [esp + 0x4d], 0xf
mov eax, 2
mov byte [esp + eax + 0x4c], 0
add eax, 1
cmp eax, 4
jne 0x410359
xor eax, eax
cmp eax, 4
jae 0x4103ce
mov cl, byte [esp + eax + 0x4c]
movzx esi, cl
mov edi, eax
and edi, 0x3aa28143
xor edi, 0x3aa28143
mov edx, eax
and edx, 0xc55d7ebc
sub edx, edi
mov edi, edx
and edi, esi
mov esi, edi
and esi, 0xfd
mov ebx, edi
and ebx, 2
xor ebx, 2
imul ebx, esi
mov esi, edi
and esi, 2
or edi, 2
imul edi, esi
add edi, ebx
mov esi, edi
xor esi, 0xffffffff
mov ebx, edx
and ebx, esi
xor edx, 0xffffffff
and edi, edx
sub ebx, edi
add bl, cl
add bl, 0x4f
mov byte [esp + eax + 0x4c], bl
add eax, 1
jmp 0x410368
lea eax, [esp + 0x4c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x27c], eax
mov al, byte [esp + 0x90]
mov byte [esp + 0x204], al
mov byte [esp + 0x2c0], 0x7e
mov byte [esp + 0x2c1], 7
mov eax, 2
mov byte [esp + eax + 0x2c0], 0
add eax, 1
cmp eax, 8
jne 0x41040c
xor eax, eax
mov ebx, dword [esp + 0x2c]
cmp eax, 8
jae 0x410475
movzx edx, byte [esp + eax + 0x2c0]
mov ecx, eax
add ecx, 0x52324455
mov esi, ecx
xor esi, 0x76b4c154
shl ecx, 1
and ecx, 0x12967d56
sub ecx, esi
xor ecx, edx
mov edx, ecx
and edx, 0xfa
mov esi, ecx
and esi, 5
mov edi, ecx
xor edi, 0xfa
add ecx, edi
sub ecx, esi
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x2c0], cl
add eax, 1
jmp 0x410422
lea eax, [esp + 0x2c0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401890
mov edi, eax
mov edx, dword [esp + 0x27c]
test edx, edx
sete al
test edi, edi
sete cl
or al, cl
test al, 1
mov esi, dword [ebp + 8]
jne 0x4104aa
jmp 0x4104b3
mov edi, dword [esp + 0x28]
jmp 0x410942
mov dword [esp], edx
call fcn.00412780
mov ebx, eax
sub ebx, 0xffffffff
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4104d8
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
xor ecx, ecx
mov dword [esp + 0x2ac], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x27c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ab70
mov dword [esp], edi
call fcn.00412780
mov ebx, eax
sub ebx, 0xffffffff
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41052d
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
xor ecx, ecx
mov dword [esp + 0x2a8], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ab70
mov al, byte [esp + 0x8c]
mov byte [esp + 0x208], al
mov byte [esp + 0x22c], 0x8d
mov byte [esp + 0x22d], 0x91
mov byte [esp + 0x22e], 0x16
mov eax, 3
mov byte [esp + eax + 0x22c], 0
add eax, 1
cmp eax, 5
jne 0x410581
xor edi, edi
cmp edi, 5
jae 0x41061d
movzx esi, byte [esp + edi + 0x22c]
mov dword [esp + 0x378], esi
mov edx, edi
add edx, 0x2524a546
mov ecx, 0x5adb5ab9
sub ecx, edi
or ecx, esi
xor esi, 0xffffffff
mov eax, edi
add eax, 0x46
or eax, esi
and eax, ecx
mov ebx, edx
and ebx, eax
shl ebx, 1
mov ecx, ebx
xor ecx, edx
mov eax, 0x5adb5ab9
sub eax, edi
and ebx, eax
shl ebx, 1
sub ecx, ebx
add ecx, dword [esp + 0x378]
mov eax, ecx
xor eax, 0x5e
mov edx, ecx
or edx, 0xa1
and edx, eax
mov eax, ecx
and eax, 0x5e
mov esi, ecx
xor esi, 0xa1
add ecx, esi
mov esi, dword [ebp + 8]
sub ecx, eax
add ecx, edx
add cl, 1
mov byte [esp + edi + 0x22c], cl
add edi, 1
jmp 0x410593
lea eax, [esp + 0x22c]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.00401960
xor ebx, ebx
cmp eax, 0
mov dword [esp + 0x40], 0
mov edi, dword [esp + 0x28]
je 0x410874
mov dword [esp + 0x3a0], eax
mov dword [esp], eax
call fcn.00401b80
mov ecx, 8
mov dword [esp + 0x40], eax
mul ecx
seto cl
add eax, 4
setb dl
or cl, dl
mov edx, 0xffffffff
test cl, 1
jne 0x410678
mov edx, eax
mov dword [esp], edx
call fcn.00408230
mov ecx, dword [esp + 0x40]
mov dword [eax], ecx
add eax, 4
cmp ecx, 0
sete cl
test cl, 1
mov dword [esp + 0x44], eax
jne 0x4106bb
jmp 0x41069a
mov ecx, dword [esp + 0x40]
shl ecx, 3
mov edi, eax
mov ebx, edi
add ebx, ecx
mov ecx, edi
call fcn.00412a90
add edi, 8
cmp edi, ebx
jne 0x4106a7
mov edi, dword [esp + 0x28]
jmp 0x4106bb
xor ebx, ebx
jmp 0x4106bf
cmp ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x3a0]
jb 0x4106d5
mov ebx, dword [esp + 0x44]
jmp 0x410874
mov dword [esp], eax
mov dword [esp + 0x398], ebx
mov dword [esp + 4], ebx
call fcn.00401b90
mov dword [esp + 0x28c], eax
mov al, byte [esp + 0x88]
mov byte [esp + 0x20c], al
mov byte [esp + 0x34], 0x97
mov byte [esp + 0x35], 0xa9
mov byte [esp + 0x36], 0x3a
mov eax, 3
mov byte [esp + eax + 0x34], 0
add eax, 1
cmp eax, 4
jne 0x410711
xor eax, eax
mov ebx, dword [esp + 0x44]
cmp eax, 4
jae 0x4107a3
movzx ecx, byte [esp + eax + 0x34]
mov edx, eax
add edx, 0xce7c22cb
mov esi, edx
xor esi, ecx
mov edi, 0x3183dd34
sub edi, eax
or edi, esi
mov ebx, edi
xor ebx, 0xffffffff
mov esi, ebx
and esi, 0xfffffffd
and edi, 2
imul edi, esi
mov esi, ebx
and esi, 2
or ebx, 2
imul ebx, esi
add ebx, edi
mov edi, dword [esp + 0x28]
mov esi, ebx
xor esi, 0xffffffff
and edx, esi
mov esi, 0x3183dd34
sub esi, eax
and ebx, esi
sub ebx, edx
mov edx, ecx
xor edx, 0xffffffff
mov esi, ebx
and esi, edx
xor ebx, 0xffffffff
and ecx, ebx
mov ebx, dword [esp + 0x44]
sub ecx, esi
mov esi, dword [ebp + 8]
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, 8
add edx, ecx
mov byte [esp + eax + 0x34], dl
add eax, 1
jmp 0x410724
lea eax, [esp + 0x34]
mov ecx, dword [esp + 0x28c]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x380], eax
mov al, byte [esp + 0x84]
mov byte [esp + 0x210], al
mov byte [esp + 0x224], 0x9f
mov byte [esp + 0x225], 0x75
mov byte [esp + 0x226], 0xfa
mov eax, 3
mov byte [esp + eax + 0x224], 0
add eax, 1
cmp eax, 5
jne 0x4107ec
xor eax, eax
cmp eax, 5
jae 0x410820
mov cl, byte [esp + eax + 0x224]
mov dl, al
add dl, 0x7f
xor dl, cl
add dl, 0x85
mov byte [esp + eax + 0x224], dl
add eax, 1
jmp 0x4107fe
lea eax, [esp + 0x224]
mov ecx, dword [esp + 0x28c]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov ecx, ebx
mov ebx, dword [esp + 0x398]
mov edx, ebx
shl edx, 3
add ecx, edx
mov dword [esp], eax
mov eax, dword [esp + 0x380]
mov dword [esp + 4], eax
call fcn.00412aa0
sub esp, 8
add ebx, 0x91147bd1
add ebx, 1
sub ebx, 0x91147bd1
jmp 0x4106bf
lea ecx, [esp + 0x3f8]
mov dword [esp], 3
call fcn.00408ef0
sub esp, 4
lea eax, [esp + 0x3f8]
mov dword [esp], eax
mov eax, dword [esp + 0x2ac]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2a8]
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x10], eax
call fcn.0041a9a0
lea ecx, [esp + 0x3f8]
call fcn.00409950
cmp ebx, 0
sete al
test al, 1
jne 0x41090e
jmp 0x4108d3
mov edi, ebx
add edi, 0xfffffffc
mov eax, dword [ebx - 4]
shl eax, 3
mov ecx, ebx
mov ebx, ecx
add ebx, eax
mov eax, ecx
cmp ecx, ebx
je 0x410902
mov dword [esp + 0x44], eax
jmp 0x4108f0
add ebx, 0xfffffff8
mov ecx, ebx
call fcn.00412b50
cmp ebx, dword [esp + 0x44]
jne 0x4108f0
jmp 0x410902
mov dword [esp], edi
call fcn.00408240
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
jmp 0x410914
mov eax, dword [esp + 0x2ac]
mov dword [esp], eax
call fcn.00408240
jmp 0x410925
jmp 0x410927
mov eax, dword [esp + 0x2a8]
mov dword [esp], eax
call fcn.00408240
lea ecx, [esp + 0x3f8]
call fcn.00408fd0
jmp 0x410944
jmp 0x410946
xor eax, eax
sub eax, edi
add eax, 0xffffffff
xor edi, edi
sub edi, eax
jmp 0x40de3e
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret