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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x658
mov ebx, dword [ebp + 8]
mov al, byte [esp + 0x1b8]
mov byte [esp + 0x1bc], al
mov byte [esp + 0x6a], 0x8d
mov byte [esp + 0x6b], 0x2f
xor eax, eax
cmp eax, 2
jae 0x40ee7f
movzx edx, byte [esp + eax + 0x6a]
mov ecx, eax
add ecx, 0x636013de
xor ecx, edx
mov edx, ecx
and edx, 0xd
mov edi, ecx
and edi, 0xd
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
mov esi, ecx
shl esi, 1
and esi, 0x1e
add esi, 0xf1
sub ecx, esi
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x6a], cl
add eax, 1
jmp 0x40ee2c
lea eax, [esp + 0x6a]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401a90
mov esi, eax
cmp esi, 0
jne 0x40ee9d
xor eax, eax
jmp 0x411c6e
xor edi, edi
jmp 0x40eea1
mov dword [esp], esi
call fcn.00401f40
cmp edi, eax
jb 0x40eeb4
mov al, 1
jmp 0x411c6e
mov dword [esp], esi
mov dword [esp + 4], edi
call fcn.00401f50
mov ebx, eax
mov al, byte [esp + 0x1b4]
mov byte [esp + 0x1c0], al
mov byte [esp + 0x68], 0xd9
mov byte [esp + 0x69], 0x6e
xor eax, eax
mov dword [esp + 0x28], ebx
cmp eax, 2
jae 0x40ef23
movzx edx, byte [esp + eax + 0x68]
mov ecx, eax
add ecx, 0xd01be745
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xae
mov ebx, edi
mov edi, ecx
shl edi, 1
and edi, 0xae
add edi, 0x29
sub ecx, edi
mov edi, ebx
mov ebx, dword [esp + 0x28]
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x68], cl
add eax, 1
jmp 0x40eee0
lea eax, [esp + 0x68]
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [esp + 8], 3
call fcn.00401e40
sub eax, 1
mov al, 1
sbb al, 0xff
test al, 1
jne 0x40ef48
jmp 0x40ef4d
jmp 0x411c66
mov al, byte [esp + 0x1b0]
mov byte [esp + 0x1c4], al
mov byte [esp + 0x66], 0x33
mov byte [esp + 0x67], 0x98
xor eax, eax
cmp eax, 2
jae 0x40ef83
mov cl, byte [esp + eax + 0x66]
mov dl, al
add dl, 0x5f
xor dl, cl
add dl, 8
mov byte [esp + eax + 0x66], dl
add eax, 1
jmp 0x40ef67
mov dword [esp + 0x364], esi
lea eax, [esp + 0x66]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00401980
fnstcw word [esp + 0xc2]
movzx eax, word [esp + 0xc2]
or eax, 0xc00
mov word [esp + 0x29a], ax
fldcw word [esp + 0x29a]
fistp dword [esp + 0x378]
fldcw word [esp + 0xc2]
mov eax, dword [esp + 0x378]
mov ecx, eax
sub ecx, 4
ja 0x411c5d
mov eax, dword [eax*4 + 0x43f588]
jmp eax
mov al, byte [esp + 0x1ac]
mov byte [esp + 0x1c8], al
mov byte [esp + 0x64], 0xef
mov byte [esp + 0x65], 0x70
jmp 0x40f000
xor eax, eax
mov dword [esp + 0x24], edi
jmp 0x40f008
cmp eax, 2
jae 0x40f080
movzx ecx, byte [esp + eax + 0x64]
mov edi, eax
and edi, 0x652c0beb
xor edi, 0x652c0beb
mov edx, eax
and edx, 0x9ad3f414
sub edx, edi
mov edi, edx
add edi, 0xf7b7e632
mov ebx, edi
shl ebx, 1
add edx, 0xf7b7e631
sub edx, ebx
mov ebx, edx
add ebx, 1
xor edx, 0xffffffff
or edx, 0x2c0e8420
add edx, ebx
and edi, 0xd3f17bdf
mov ebx, ecx
xor ebx, 0x20
or edx, edi
mov edi, edx
xor edi, 0xffffffff
and ebx, edi
mov edi, dword [esp + 0x24]
xor ecx, 0xdf
and edx, ecx
or ebx, edx
add bl, 0xc8
mov byte [esp + eax + 0x64], bl
mov ebx, dword [esp + 0x28]
add eax, 1
jmp 0x40f008
lea eax, [esp + 0x64]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e40
cmp eax, 0
je 0x40f326
mov al, byte [esp + 0x1a8]
mov byte [esp + 0x1cc], al
mov byte [esp + 0xae], 0x94
mov byte [esp + 0xaf], 0x92
mov byte [esp + 0xb0], 0x93
mov byte [esp + 0xb1], 0x94
xor eax, eax
cmp eax, 4
jae 0x40f0f3
mov cl, byte [esp + eax + 0xae]
mov dl, al
add dl, 0x59
xor dl, cl
add dl, 0x38
mov byte [esp + eax + 0xae], dl
add eax, 1
jmp 0x40f0d1
mov eax, dword [esp + 0xae]
mov cl, byte [esp + 0x1a4]
mov byte [esp + 0x1d0], cl
mov byte [esp + 0x62], 0xf5
mov byte [esp + 0x63], 0x19
xor ecx, ecx
cmp ecx, 2
jae 0x40f14b
mov bl, byte [esp + ecx + 0x62]
mov edx, ecx
xor edx, 0x27
mov esi, edi
mov edi, ecx
or edi, 0x58
and edi, edx
shl edi, 1
mov edx, ecx
xor edx, 0xd8
add edx, edi
mov edi, esi
xor dl, bl
mov ebx, dword [esp + 0x28]
add dl, 0x40
mov byte [esp + ecx + 0x62], dl
add ecx, 1
jmp 0x40f114
lea ecx, [esp + 0x62]
mov dword [esp], ebx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.00401e40
cmp eax, 0
je 0x40f326
mov al, byte [esp + 0x1a0]
mov byte [esp + 0x1d4], al
mov byte [esp + 0x60], 0x7c
mov byte [esp + 0x61], 0xe7
xor eax, eax
cmp eax, 2
jae 0x40f1ef
mov esi, edi
movzx edi, byte [esp + eax + 0x60]
mov ecx, 0xa9
sub ecx, eax
mov edx, 0xa9
sub edx, eax
and ecx, edx
mov edx, eax
add edx, 0xe6d2d156
or edx, edi
xor edi, 0xffffffff
or ecx, edi
and edx, ecx
mov ecx, edx
and ecx, 0xc969754f
mov edi, edx
and edi, 0x36968ab0
xor edi, 0x36968ab0
and edx, 0x36968ab0
xor edx, 0x36968ab0
or edi, edx
xor edi, 0xffffffff
add ecx, edi
mov edi, esi
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x60], cl
add eax, 1
jmp 0x40f182
lea eax, [esp + 0x60]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e40
cmp eax, 0
je 0x40f326
mov al, byte [esp + 0x19c]
mov byte [esp + 0x1d8], al
mov byte [esp + 0x5e], 0x88
mov byte [esp + 0x5f], 0x2d
xor eax, eax
cmp eax, 2
jae 0x40f25f
movzx edx, byte [esp + eax + 0x5e]
mov esi, edi
mov edi, eax
add edi, 0xa75d734c
mov ecx, edi
or ecx, edx
mov ebx, eax
add ebx, 0x4c
or edi, ebx
mov ebx, dword [esp + 0x28]
and edi, edx
sub ecx, edi
mov edi, esi
add cl, 0xa0
mov byte [esp + eax + 0x5e], cl
add eax, 1
jmp 0x40f22a
lea eax, [esp + 0x5e]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e40
cmp eax, 0
je 0x40f326
mov al, byte [esp + 0x198]
mov byte [esp + 0x1dc], al
mov byte [esp + 0x93], 0x60
mov byte [esp + 0x94], 0x54
mov byte [esp + 0x95], 0xc8
xor eax, eax
cmp eax, 3
jae 0x40f2f3
movzx ecx, byte [esp + eax + 0x93]
mov esi, edi
mov edi, ecx
xor edi, 0xffffffff
mov edx, 0x89
sub edx, eax
or edx, edi
mov edi, ecx
xor edi, 0xffffffff
mov ebx, 0x89
sub ebx, eax
or ebx, edi
mov edi, esi
and edx, ebx
mov ebx, eax
add ebx, 0x76
or ebx, ecx
and ebx, edx
add bl, 0x50
mov byte [esp + eax + 0x93], bl
mov ebx, dword [esp + 0x28]
add eax, 1
jmp 0x40f2a8
lea eax, [esp + 0x93]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e40
cmp eax, 0
setne al
xor al, 0xff
and al, 1
or al, 0
jmp 0x40f31c
test al, 1
jne 0x411c5d
jmp 0x40f32b
jmp 0x411c5d
mov al, byte [esp + 0x194]
mov byte [esp + 0x1e0], al
mov byte [esp + 0x5c], 0x2f
mov byte [esp + 0x5d], 0xb0
xor eax, eax
cmp eax, 2
jae 0x40f371
movzx edx, byte [esp + eax + 0x5c]
mov ecx, eax
add ecx, 0x35adb887
mov esi, edi
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
mov edi, esi
add cl, 0xc8
mov byte [esp + eax + 0x5c], cl
add eax, 1
jmp 0x40f345
lea eax, [esp + 0x5c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x34c], eax
mov al, byte [esp + 0x190]
mov byte [esp + 0x1e4], al
mov byte [esp + 0x5a], 0x1d
mov byte [esp + 0x5b], 0x71
xor eax, eax
cmp eax, 2
jae 0x40f3f0
mov esi, edi
movzx edi, byte [esp + eax + 0x5a]
mov ecx, eax
add ecx, 0xf0
mov edx, edi
shl edx, 1
xor edx, 0xffffffff
add edx, edi
and edx, 0x27
and edi, 0xd8
mov ebx, 0xf
sub ebx, eax
and ebx, 0x27
and ecx, 0xd8
or edx, edi
mov edi, esi
or ebx, ecx
xor ebx, edx
xor bl, 0x80
mov byte [esp + eax + 0x5a], bl
mov ebx, dword [esp + 0x28]
add eax, 1
jmp 0x40f3a2
lea eax, [esp + 0x5a]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401a90
mov dword [esp + 0x2e8], eax
mov al, byte [esp + 0x18c]
mov byte [esp + 0x1e8], al
mov byte [esp + 0x58], 0xfa
mov byte [esp + 0x59], 0x81
xor ebx, ebx
cmp ebx, 2
jae 0x40f460
mov al, byte [esp + ebx + 0x58]
mov byte [esp + 0x6c], al
mov esi, edi
mov edi, ebx
xor edi, 0x97367a7f
mov ecx, ebx
or ecx, 0x80
and ecx, edi
mov eax, ebx
or eax, 0x68c98580
mov edx, eax
and edx, edi
mov edi, esi
or eax, ecx
add edx, eax
xor dl, byte [esp + 0x6c]
mov byte [esp + ebx + 0x58], dl
add ebx, 1
jmp 0x40f421
lea eax, [esp + 0x58]
mov ebx, dword [esp + 0x28]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x354], eax
mov al, byte [esp + 0x188]
mov byte [esp + 0x1ec], al
mov byte [esp + 0x56], 0x62
mov byte [esp + 0x57], 0xc7
xor eax, eax
cmp eax, 2
jae 0x40f4d3
mov esi, edi
movzx edi, byte [esp + eax + 0x56]
mov ecx, 0x89
sub ecx, eax
or ecx, edi
mov edx, 0x89
sub edx, eax
mov ebx, 0x89
sub ebx, eax
or edx, ebx
mov ebx, dword [esp + 0x28]
and edx, edi
mov edi, esi
xor ecx, 0xffffffff
or edx, ecx
add dl, 0x50
mov byte [esp + eax + 0x56], dl
add eax, 1
jmp 0x40f495
lea eax, [esp + 0x56]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00401980
fnstcw word [esp + 0xc0]
movzx eax, word [esp + 0xc0]
or eax, 0xc00
mov word [esp + 0x298], ax
fldcw word [esp + 0x298]
fistp dword [esp + 0x36c]
fldcw word [esp + 0xc0]
mov eax, dword [esp + 0x36c]
mov dword [esp + 0x358], eax
mov al, byte [esp + 0x184]
mov byte [esp + 0x1f0], al
mov byte [esp + 0x90], 0x9d
mov byte [esp + 0x91], 0x6f
mov byte [esp + 0x92], 0xfd
xor eax, eax
cmp eax, 3
jae 0x40f58b
movzx edx, byte [esp + eax + 0x90]
mov ecx, eax
add ecx, 0xe3
mov edi, 0x1c
sub edi, eax
mov ebx, 0x1c
sub ebx, eax
and edi, ebx
mov ebx, dword [esp + 0x28]
or ecx, edx
xor edx, 0xffffffff
or edi, edx
and ecx, edi
add cl, 0xe8
mov byte [esp + eax + 0x90], cl
add eax, 1
jmp 0x40f54a
lea eax, [esp + 0x90]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00401980
fnstcw word [esp + 0xbe]
movzx eax, word [esp + 0xbe]
or eax, 0xc00
mov word [esp + 0x296], ax
fldcw word [esp + 0x296]
fistp dword [esp + 0x368]
fldcw word [esp + 0xbe]
mov eax, dword [esp + 0x368]
mov dword [esp + 0x350], eax
mov al, byte [esp + 0x180]
mov byte [esp + 0x1f4], al
mov byte [esp + 0x8d], 0xde
mov byte [esp + 0x8e], 0xd5
mov byte [esp + 0x8f], 0x3a
xor eax, eax
cmp eax, 3
jae 0x40f637
movzx edx, byte [esp + eax + 0x8d]
mov edi, eax
add edi, 0xf8
mov ecx, eax
add ecx, 0xf8
and ecx, edx
or edi, edx
xor ecx, edi
add cl, 0x40
mov byte [esp + eax + 0x8d], cl
add eax, 1
jmp 0x40f605
lea eax, [esp + 0x8d]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401b90
cmp eax, 0
setg byte [esp + 0x72]
mov ebx, dword [esp + 0x34c]
mov dword [esp], ebx
call fcn.00413bf0
mov edi, eax
mov dword [esp + 0x2c8], edi
sub edi, 0x709f9d3a
add edi, 1
add edi, 0x709f9d3a
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f691
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
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.0040a670
xor eax, eax
lea eax, [esp + 0x17c]
mov dword [esp], 0
mov dword [esp + 0xc8], esi
mov dword [esp + 4], esi
mov ecx, dword [esp + 0x2c8]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x4486a4]
sub esp, 0x18
mov esi, eax
mov cl, byte [esp + 0x178]
mov byte [esp + 0x1f8], cl
mov byte [esp + 0xaa], 0xfd
mov byte [esp + 0xab], 0x1f
mov byte [esp + 0xac], 0
mov byte [esp + 0xad], 0x41
xor eax, eax
cmp eax, 4
jae 0x40f780
movzx ecx, byte [esp + eax + 0xaa]
mov edi, ecx
xor edi, 0xffffffff
mov edx, 0x91
sub edx, eax
or edx, edi
mov edi, 0x91
sub edi, eax
mov ebx, ecx
xor ebx, 0xffffffff
or edi, ebx
and edi, edx
xor edi, 0xffffffff
shl edi, 1
add ecx, eax
mov edx, ecx
add edx, 0x6e
mov ebx, 0x91
sub ebx, ecx
and ebx, edi
xor edi, 0xffffffff
and edx, edi
sub edx, ebx
add dl, 0x90
mov byte [esp + eax + 0xaa], dl
add eax, 1
jmp 0x40f72a
mov eax, dword [esp + 0xaa]
cmp esi, eax
mov edi, dword [esp + 0x24]
je 0x40f7a7
jmp 0x40f791
mov eax, dword [esp + 0xc8]
mov dword [esp], eax
call fcn.00407f70
jmp 0x40f7a2
jmp 0x40f9f8
mov eax, dword [esp + 0x17c]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f7c4
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
mov ebx, eax
mov eax, dword [0x4486a4]
mov ecx, dword [esp + 0x17c]
xor edx, edx
lea edx, [esp + 0x17c]
mov dword [esp], 0
mov esi, dword [esp + 0xc8]
mov dword [esp + 4], esi
mov esi, dword [esp + 0x2c8]
mov dword [esp + 8], esi
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call eax
sub esp, 0x18
cmp eax, 0
jge 0x40f82e
jmp 0x40f818
mov eax, dword [esp + 0xc8]
mov dword [esp], eax
call fcn.00407f70
jmp 0x40f829
jmp 0x40f9f6
jmp 0x40f830
mov eax, dword [esp + 0xc8]
mov dword [esp], eax
call fcn.00407f70
mov dword [esp + 0x2cc], ebx
mov esi, dword [esp + 0x354]
mov dword [esp], esi
call fcn.00413bf0
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f872
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
xor ecx, ecx
mov dword [esp + 0x2bc], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040a670
lea ecx, [esp + 0x5c8]
mov dword [esp], 1
call fcn.00408ae0
sub esp, 4
xor ebx, ebx
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x2e8]
mov dword [esp], esi
call fcn.00401f40
cmp ebx, eax
jb 0x40f8cf
jmp 0x40f9ba
mov dword [esp], esi
mov dword [esp + 4], ebx
call fcn.00401f20
mov dword [esp], eax
call fcn.00401960
cmp eax, 0
jne 0x40f8ed
jmp 0x40f9a4
mov dword [esp + 0x30c], eax
mov dword [esp], eax
call fcn.00413bf0
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f919
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
mov esi, eax
xor eax, eax
mov dword [esp], esi
mov dword [esp + 4], edi
mov eax, dword [esp + 0x30c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a670
mov eax, dword [esp + 0x358]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x350]
mov dword [esp + 0x10], eax
mov edi, esi
mov dword [esp + 0xc], esi
mov eax, dword [esp + 0x2cc]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x2bc]
mov dword [esp + 4], eax
lea eax, [esp + 0x5c8]
mov dword [esp], eax
xor eax, eax
mov cl, byte [esp + 0x72]
mov al, cl
and eax, 1
mov dword [esp + 0x18], eax
call fcn.00420df0
jmp 0x40f996
mov dword [esp], edi
call fcn.00407f70
mov edi, dword [esp + 0x24]
jmp 0x40f9a4
mov eax, ebx
and eax, 1
or ebx, 1
add ebx, eax
mov esi, dword [esp + 0x2e8]
jmp 0x40f8be
mov eax, dword [esp + 0x2bc]
mov dword [esp], eax
call fcn.00407f70
mov eax, dword [esp + 0x2cc]
jmp 0x40f9d2
mov dword [esp], eax
call fcn.00407f70
jmp 0x40f9dc
lea ecx, [esp + 0x5c8]
call fcn.00409700
lea ecx, [esp + 0x5c8]
call fcn.00408bc0
jmp 0x40f9f6
jmp 0x40f9f8
jmp 0x411c5d
mov al, byte [esp + 0x174]
mov byte [esp + 0x1fc], al
mov byte [esp + 0x54], 0xb1
mov byte [esp + 0x55], 0x17
xor eax, eax
cmp eax, 2
jae 0x40fa48
mov dl, byte [esp + eax + 0x54]
xor ecx, ecx
sub ecx, eax
mov esi, edi
mov edi, ecx
shl edi, 1
and edi, 0xb4
xor ecx, 0x25
add ecx, 1
sub ecx, edi
mov edi, esi
xor cl, dl
add cl, 0xd0
mov byte [esp + eax + 0x54], cl
add eax, 1
jmp 0x40fa17
lea eax, [esp + 0x54]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e40
cmp eax, 0
je 0x40fce4
mov al, byte [esp + 0x170]
mov byte [esp + 0x200], al
mov byte [esp + 0x52], 0xbd
mov byte [esp + 0x53], 0xe
xor eax, eax
mov dword [esp + 0x24], edi
cmp eax, 2
jae 0x40fad1
movzx edi, byte [esp + eax + 0x52]
mov edx, eax
add edx, 0xc1a6f125
mov ecx, edx
or ecx, edi
mov ebx, eax
add ebx, 0x25
or edx, ebx
mov ebx, dword [esp + 0x28]
and edx, edi
mov edi, dword [esp + 0x24]
add ecx, 0xfa28ceb6
sub ecx, edx
add ecx, 0xf89fa821
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x52], cl
add eax, 1
jmp 0x40fa87
jmp 0x40fad3
jmp 0x40fad5
lea eax, [esp + 0x52]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e40
cmp eax, 0
je 0x40fce4
mov al, byte [esp + 0x16c]
mov byte [esp + 0x204], al
mov byte [esp + 0x50], 1
mov byte [esp + 0x51], 0xad
xor eax, eax
cmp eax, 2
jae 0x40fb3f
mov dl, byte [esp + eax + 0x50]
mov esi, edi
mov edi, eax
shl edi, 1
and edi, 0x98
mov ecx, eax
xor ecx, 0xcc
add ecx, edi
mov edi, esi
xor cl, dl
add cl, 0xa0
mov byte [esp + eax + 0x50], cl
add eax, 1
jmp 0x40fb10
lea eax, [esp + 0x50]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 5
call fcn.00401e40
cmp eax, 0
je 0x40fce4
mov al, byte [esp + 0x168]
mov byte [esp + 0x208], al
mov byte [esp + 0x4e], 0xa
mov byte [esp + 0x4f], 0x71
xor eax, eax
cmp eax, 2
jae 0x40fbac
movzx edx, byte [esp + eax + 0x4e]
mov ecx, eax
add ecx, 0x42d264f0
xor ecx, edx
mov edx, ecx
xor edx, 0x81
shl ecx, 1
and ecx, 0xfc
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0x4e], cl
add eax, 1
jmp 0x40fb7a
lea eax, [esp + 0x4e]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e40
cmp eax, 0
je 0x40fce4
mov al, byte [esp + 0x164]
mov byte [esp + 0x20c], al
mov byte [esp + 0x4c], 0x26
mov byte [esp + 0x4d], 0x43
xor eax, eax
cmp eax, 2
jae 0x40fc03
mov cl, byte [esp + eax + 0x4c]
mov dl, al
add dl, 0xd2
xor dl, cl
add dl, 0x70
mov byte [esp + eax + 0x4c], dl
add eax, 1
jmp 0x40fbe7
lea eax, [esp + 0x4c]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e40
cmp eax, 0
je 0x40fce4
mov al, byte [esp + 0x160]
mov byte [esp + 0x210], al
mov byte [esp + 0x8a], 0x54
mov byte [esp + 0x8b], 0xa0
mov byte [esp + 0x8c], 0x34
xor eax, eax
cmp eax, 3
jae 0x40fcaf
movzx edx, byte [esp + eax + 0x8a]
mov ecx, eax
xor ecx, 0x45e120dd
mov edi, eax
or edi, 0xba1edf22
and edi, ecx
mov ecx, eax
or ecx, 0xba1edf22
add ecx, edi
xor ecx, edx
mov ebx, ecx
shl ebx, 1
and ebx, 0xde
mov edi, ecx
xor edi, 0x2f0906ef
mov edx, edi
add edx, ebx
mov ebx, dword [esp + 0x28]
and edi, 1
and ecx, 1
xor ecx, 1
or edi, ecx
xor edx, 1
shl edi, 1
add edx, edi
mov byte [esp + eax + 0x8a], dl
add eax, 1
jmp 0x40fc4c
lea eax, [esp + 0x8a]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e40
cmp eax, 0
setne al
xor al, 0xff
and al, 1
or al, 0
test al, 1
mov edi, dword [esp + 0x24]
jne 0x411c5d
jmp 0x40fce9
jmp 0x411c5d
mov al, byte [esp + 0x15c]
mov byte [esp + 0x214], al
mov byte [esp + 0x4a], 0xf
mov byte [esp + 0x4b], 0xe9
xor eax, eax
cmp eax, 2
jae 0x40fd33
movzx ecx, byte [esp + eax + 0x4a]
mov edx, eax
add edx, 0xeef4d3a8
xor edx, ecx
mov ecx, edx
and ecx, 0xbf
and edx, 0x40
xor edx, 0x41
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0x4a], cl
add eax, 1
jmp 0x40fd03
lea eax, [esp + 0x4a]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x2d8], eax
mov al, byte [esp + 0x158]
mov byte [esp + 0x218], al
mov byte [esp + 0x48], 0x82
mov byte [esp + 0x49], 0x13
xor eax, eax
cmp eax, 2
jae 0x40fdc5
mov cl, byte [esp + eax + 0x48]
mov byte [esp + 0x6f], cl
movzx edi, cl
mov ebx, eax
add ebx, 0xfadc8602
mov edx, ebx
and edx, edi
shl edx, 1
mov ecx, ebx
sub ecx, edx
add ecx, edi
xor ecx, 0xffffffff
mov edi, ebx
and edi, ecx
mov ecx, edi
and ecx, 2
xor ecx, 2
mov edx, edi
and edx, 0xfd
imul edx, ecx
mov ecx, edi
and ecx, 2
or edi, 2
imul edi, ecx
add edi, edx
sub ebx, edi
add bl, byte [esp + 0x6f]
add bl, 0xf0
mov byte [esp + eax + 0x48], bl
mov ebx, dword [esp + 0x28]
add eax, 1
jmp 0x40fd64
lea eax, [esp + 0x48]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x2f0], eax
mov al, byte [esp + 0x154]
mov byte [esp + 0x21c], al
mov byte [esp + 0x46], 0x67
mov byte [esp + 0x47], 0x8b
xor ecx, ecx
cmp ecx, 2
jae 0x40fe41
mov al, byte [esp + ecx + 0x46]
mov byte [esp + 0x6e], al
movzx edi, al
mov eax, ecx
add eax, 0xc83f8e5a
mov ebx, eax
and ebx, edi
shl ebx, 1
mov edx, eax
add edx, edi
sub edx, ebx
mov edi, edx
shl edi, 1
xor edi, 0xffffffff
add edx, edi
and eax, edx
shl eax, 1
mov ebx, ecx
sub ebx, eax
add bl, 0x5a
add bl, byte [esp + 0x6e]
add bl, 0x30
mov byte [esp + ecx + 0x46], bl
mov ebx, dword [esp + 0x28]
add ecx, 1
jmp 0x40fdf6
lea eax, [esp + 0x46]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401a90
mov dword [esp + 0x33c], eax
mov al, byte [esp + 0x150]
mov byte [esp + 0x220], al
mov byte [esp + 0x44], 0x1e
mov byte [esp + 0x45], 0xa5
xor esi, esi
cmp esi, 2
jae 0x40fec6
movzx ecx, byte [esp + esi + 0x44]
mov edx, esi
xor edx, 0x8f9fcd7c
mov eax, esi
shl eax, 1
and eax, 0xe0c06506
sub eax, edx
mov edx, ecx
xor edx, 0x46
mov ebx, ecx
xor ebx, 0x46
and edx, ebx
mov ebx, eax
xor ebx, 0x46
mov edi, eax
xor edi, 0x46
and ebx, edi
or edx, ebx
mov ebx, dword [esp + 0x28]
xor ecx, 0x46
xor eax, 0x46
and ecx, eax
xor ecx, 0xffffffff
and edx, ecx
add dl, 0xe0
mov byte [esp + esi + 0x44], dl
add esi, 1
jmp 0x40fe72
lea eax, [esp + 0x44]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x2f4], eax
mov al, byte [esp + 0x14c]
mov byte [esp + 0x224], al
mov byte [esp + 0x42], 0xea
mov byte [esp + 0x43], 0x4f
xor ecx, ecx
cmp ecx, 2
jae 0x40ff74
movzx esi, byte [esp + ecx + 0x42]
mov edi, ecx
add edi, 0xa36495be
mov eax, 0x41
sub eax, ecx
or eax, esi
mov dword [esp + 0x310], eax
mov ebx, 0x1c9b6a41
sub ebx, ecx
and ebx, 0x332ca1da
and edi, 0xccd35e25
or ebx, edi
xor ebx, 0xccd35e25
mov edi, 0x5c9b6a41
sub edi, ecx
mov eax, ecx
add eax, 0xa36495be
mov edx, ebx
and edx, eax
mov eax, ebx
xor eax, edi
add ebx, eax
sub ebx, edx
mov eax, ebx
shl eax, 1
xor eax, 0xffffffff
add ebx, eax
xor esi, 0xffffffff
or ebx, esi
and ebx, dword [esp + 0x310]
mov al, 0xf
sub al, bl
mov ebx, dword [esp + 0x28]
mov byte [esp + ecx + 0x42], al
add ecx, 1
jmp 0x40fef7
lea eax, [esp + 0x42]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00401980
fnstcw word [esp + 0xbc]
movzx eax, word [esp + 0xbc]
or eax, 0xc00
mov word [esp + 0x294], ax
fldcw word [esp + 0x294]
fistp dword [esp + 0x374]
fldcw word [esp + 0xbc]
mov eax, dword [esp + 0x374]
mov dword [esp + 0x360], eax
mov al, byte [esp + 0x148]
mov byte [esp + 0x228], al
mov byte [esp + 0x87], 0x40
mov byte [esp + 0x88], 0x74
mov byte [esp + 0x89], 0xe8
xor eax, eax
cmp eax, 3
jae 0x410022
mov dl, byte [esp + eax + 0x87]
mov edi, eax
and edi, 0x56
mov ebx, eax
and ebx, 0x56
xor ebx, 0xffffffff
mov ecx, eax
add ecx, 0x57
add ecx, ebx
mov ebx, dword [esp + 0x28]
add ecx, edi
xor cl, dl
add cl, 0x50
mov byte [esp + eax + 0x87], cl
add eax, 1
jmp 0x40ffeb
lea eax, [esp + 0x87]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401980
fnstcw word [esp + 0xba]
movzx eax, word [esp + 0xba]
or eax, 0xc00
mov word [esp + 0x292], ax
fldcw word [esp + 0x292]
fistp dword [esp + 0x370]
fldcw word [esp + 0xba]
mov eax, dword [esp + 0x370]
mov dword [esp + 0x35c], eax
mov eax, dword [esp + 0x2d8]
mov dword [esp], eax
call fcn.00413bf0
mov edi, eax
sub edi, 0x4c4f4f31
add edi, 1
add edi, 0x4c4f4f31
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4100ac
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
mov ebx, eax
xor eax, eax
mov dword [esp], ebx
mov dword [esp + 4], edi
mov eax, dword [esp + 0x2d8]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a670
mov dword [esp + 0x2fc], 0
mov dword [esp + 0x300], 0
mov dword [esp + 0x304], 0
mov dword [esp + 0x308], 0
lea ecx, [esp + 0x2fc]
mov dword [esp], ebx
call fcn.00438ea0
sub esp, 4
mov dword [esp], ebx
call fcn.00407f70
mov edi, dword [esp + 0x24]
lea ecx, [esp + 0x2fc]
mov dword [esp], 0x1000
call fcn.00439140
sub esp, 4
cmp eax, 0
setge al
test al, 1
jne 0x410148
jmp 0x410143
jmp 0x41077a
mov dword [esp + 0x144], 0
mov eax, dword [esp + 0x2fc]
mov dword [esp + 0x320], eax
mov al, byte [esp + 0x22c]
mov byte [esp + 0x290], al
mov byte [esp + 0xb2], 0xce
mov byte [esp + 0xb3], 0xcd
mov byte [esp + 0xb4], 0xcc
mov byte [esp + 0xb5], 0xcb
xor eax, eax
cmp eax, 4
jae 0x4101ce
movzx edi, byte [esp + eax + 0xb2]
mov edx, eax
add edx, 0x89
mov ecx, 0x76
sub ecx, eax
mov ebx, 0x76
sub ebx, eax
and ecx, ebx
or edx, edi
xor edi, 0xffffffff
or ecx, edi
and ecx, edx
add cl, 0xb8
mov byte [esp + eax + 0xb2], cl
add eax, 1
jmp 0x410191
mov edi, dword [esp + 0xb2]
xor ebx, ebx
mov ecx, 2
cmp ebx, dword [0x4486a8]
jb 0x4101e9
jmp 0x410274
mov ecx, dword [0x4486ac]
cmp dword [ecx + ebx*8], 0x4947caf6
sete dl
mov byte [esp + 0x70], dl
test dl, 1
jne 0x410204
jmp 0x410261
mov edx, dword [ecx + ebx*8 + 4]
mov ecx, 2
cmp edx, edi
je 0x410263
mov eax, dword [0x4486b0]
xor ecx, ecx
lea ecx, [esp + 0x144]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esp + 0x320]
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.0043a9b0
mov ecx, 1
jmp 0x410263
xor ecx, ecx
test byte [esp + 0x70], 1
je 0x41026c
jmp 0x410274
add ebx, 1
jmp 0x4101d7
cmp ecx, 2
je 0x41027b
mov edi, eax
mov al, byte [esp + 0x140]
mov byte [esp + 0x230], al
mov byte [esp + 0xa6], 0x5c
mov byte [esp + 0xa7], 0x59
mov byte [esp + 0xa8], 0x5a
mov byte [esp + 0xa9], 0x1b
xor eax, eax
cmp eax, 4
jae 0x4102dd
movzx edx, byte [esp + eax + 0xa6]
mov ecx, eax
add ecx, 0x15a198
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x7e
xor ecx, 0x3f
add ecx, edx
add cl, 1
mov byte [esp + eax + 0xa6], cl
add eax, 1
jmp 0x4102ab
mov eax, dword [esp + 0xa6]
cmp edi, eax
jne 0x410774
mov eax, dword [esp + 0x144]
sub eax, 0xfffffffe
mov dword [esp], eax
call fcn.00438e30
mov dword [esp + 0xdc], eax
mov esi, dword [esp + 0x144]
add esi, 2
mov eax, dword [esp + 0x2fc]
mov dword [esp + 0x31c], eax
mov al, byte [esp + 0x234]
mov byte [esp + 0x28c], al
mov byte [esp + 0xb6], 0xce
mov byte [esp + 0xb7], 0xcd
mov byte [esp + 0xb8], 0xcc
mov byte [esp + 0xb9], 0xcb
xor eax, eax
cmp eax, 4
jae 0x41038a
movzx edi, byte [esp + eax + 0xb6]
mov edx, eax
add edx, 0x89
mov ecx, 0x76
sub ecx, eax
mov ebx, 0x76
sub ebx, eax
and ecx, ebx
or edx, edi
xor edi, 0xffffffff
or ecx, edi
and ecx, edx
add cl, 0xb8
mov byte [esp + eax + 0xb6], cl
add eax, 1
jmp 0x41034d
mov eax, dword [esp + 0xb6]
mov dword [esp + 0x2ac], eax
xor edi, edi
mov ecx, 2
cmp edi, dword [0x4486a8]
jb 0x4103ac
jmp 0x410430
mov edx, dword [0x4486ac]
cmp dword [edx + edi*8], 0x4947caf6
sete bl
xor ecx, ecx
test bl, 1
jne 0x4103c5
jmp 0x410421
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, dword [esp + 0x2ac]
je 0x410421
mov eax, dword [0x4486b0]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esp + 0x31c]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], 0
call fcn.0043a9b0
mov ecx, 1
test bl, 1
je 0x410428
jmp 0x410430
add edi, 1
jmp 0x41039a
cmp ecx, 2
mov ecx, dword [esp + 0x2ac]
je 0x41043e
mov ecx, eax
cmp ecx, 0
jl 0x410765
mov eax, dword [esp + 0x2f0]
mov dword [esp], eax
call fcn.00413bf0
mov edi, eax
mov dword [esp + 0x318], edi
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41047a
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
xor ecx, ecx
mov dword [esp + 0x2a8], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esp + 0x2f0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a670
mov ecx, dword [esp + 0xdc]
mov edi, ecx
add edi, 4
mov eax, dword [ecx + 4]
movzx ecx, word [ecx]
shr ecx, 1
sub ecx, 1
shl ecx, 1
add eax, ecx
mov ebx, eax
cmp ebx, dword [edi]
jb 0x4104e2
movzx ecx, word [ebx]
cmp ecx, 0x5c
sete cl
test cl, 1
jne 0x4104db
jmp 0x4104dd
jmp 0x4104e6
add ebx, 0xfffffffe
jmp 0x4104c7
mov ebx, eax
jmp 0x4104e6
mov eax, dword [edi]
xor eax, 0xffffffff
add ebx, eax
add ebx, 1
sar ebx, 1
mov eax, ebx
add eax, dword [esp + 0x318]
add eax, 1
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410514
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
mov ecx, dword [edi]
mov esi, eax
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
call fcn.00413c70
mov dword [esp], eax
mov eax, dword [esp + 0x2a8]
mov dword [esp + 4], eax
call fcn.00409b80
mov edi, eax
jmp 0x410547
mov eax, dword [esp + 0x2a8]
mov dword [esp], eax
call fcn.00407f70
jmp 0x410558
jmp 0x41055a
sub edi, 0xe190c599
sub edi, esi
add edi, 0xe190c599
sar edi, 1
add edi, 0x92132588
add edi, 1
sub edi, 0x92132588
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410591
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
mov dword [esp], esi
mov dword [esp + 0x2c0], eax
mov dword [esp + 4], eax
call fcn.00437370
jmp 0x4105ae
mov dword [esp], esi
call fcn.00407f70
jmp 0x4105b8
mov eax, dword [esp + 0x2f4]
mov dword [esp], eax
call fcn.00413bf0
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4105e4
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
xor ecx, ecx
mov dword [esp + 0x2a0], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esp + 0x2f4]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a670
lea ecx, [esp + 0x540]
mov dword [esp], 1
call fcn.00408ae0
sub esp, 4
xor ebx, ebx
mov edi, dword [esp + 0x33c]
mov dword [esp], edi
call fcn.00401f40
cmp ebx, eax
jb 0x410644
jmp 0x410727
mov dword [esp], edi
mov dword [esp + 4], ebx
call fcn.00401f20
mov dword [esp], eax
call fcn.00401960
mov dword [esp + 0x29c], eax
cmp eax, 0
jne 0x410669
jmp 0x410717
mov eax, dword [esp + 0x29c]
mov dword [esp], eax
call fcn.00413bf0
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410695
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
mov esi, eax
xor eax, eax
mov dword [esp], esi
mov dword [esp + 4], edi
mov eax, dword [esp + 0x29c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a670
lea eax, [esp + 0x540]
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x2a0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c0]
mov dword [esp + 8], eax
mov edi, esi
mov dword [esp + 0xc], esi
mov eax, dword [esp + 0x35c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x360]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.00420df0
jmp 0x41070d
mov dword [esp], edi
call fcn.00407f70
jmp 0x410717
xor eax, eax
sub eax, ebx
add eax, 0xffffffff
xor ebx, ebx
sub ebx, eax
jmp 0x41062c
mov eax, dword [esp + 0x2a0]
mov dword [esp], eax
call fcn.00407f70
jmp 0x410738
jmp 0x41073a
mov eax, dword [esp + 0x2c0]
mov dword [esp], eax
call fcn.00407f70
lea ecx, [esp + 0x540]
call fcn.00409700
lea ecx, [esp + 0x540]
call fcn.00408bc0
jmp 0x410763
jmp 0x410765
mov eax, dword [esp + 0xdc]
mov dword [esp], eax
call fcn.00438e70
mov edi, dword [esp + 0x24]
jmp 0x41077a
lea ecx, [esp + 0x2fc]
call fcn.004392b0
jmp 0x410788
jmp 0x411c5d
mov al, byte [esp + 0x13c]
mov byte [esp + 0x238], al
mov byte [esp + 0x40], 0x69
mov byte [esp + 0x41], 0xe4
xor eax, eax
cmp eax, 2
jae 0x4107d1
movzx edx, byte [esp + eax + 0x40]
mov ecx, eax
add ecx, 0x3b
or ecx, edx
mov esi, edi
mov edi, eax
add edi, 0x3b
and edi, edx
sub ecx, edi
mov edi, esi
add cl, 0x28
mov byte [esp + eax + 0x40], cl
add eax, 1
jmp 0x4107a7
lea eax, [esp + 0x40]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x2b0], eax
mov al, byte [esp + 0x138]
mov byte [esp + 0x23c], al
mov byte [esp + 0x3e], 0x69
mov byte [esp + 0x3f], 0x1a
xor eax, eax
cmp eax, 2
jae 0x410840
mov cl, byte [esp + eax + 0x3e]
movzx edx, cl
mov ebx, eax
add ebx, 0x7ea53491
mov esi, edi
mov edi, ebx
xor edi, edx
mov edx, 0x6e
sub edx, eax
or edx, edi
mov edi, esi
shl edx, 1
add edx, 2
add edx, ebx
mov ebx, dword [esp + 0x28]
add dl, cl
add dl, 0x78
mov byte [esp + eax + 0x3e], dl
add eax, 1
jmp 0x410802
lea eax, [esp + 0x3e]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00401880
mov esi, eax
mov edx, dword [esp + 0x2b0]
test edx, edx
sete al
test esi, esi
sete cl
or al, cl
test al, 1
jne 0x41086b
jmp 0x410870
jmp 0x4111e0
mov dword [esp + 0x24], edi
mov dword [esp], edx
call fcn.00413bf0
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410899
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
xor ecx, ecx
mov dword [esp + 0x2f8], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esp + 0x2b0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a670
mov al, byte [esp + 0x134]
mov byte [esp + 0x240], al
mov byte [esp + 0x3c], 0x35
mov byte [esp + 0x3d], 0xd4
xor eax, eax
cmp eax, 2
jae 0x410934
movzx ecx, byte [esp + eax + 0x3c]
mov edx, eax
add edx, 1
mov edi, eax
xor edi, 0xffffffff
or edi, 0xd48af38b
add edi, edx
mov edx, eax
or edx, 0xd48af38b
add edx, edi
mov edi, ecx
shl edi, 1
xor edi, 0xffffffff
add edi, ecx
mov ebx, ecx
xor ebx, 0xffffffff
or edi, ebx
mov ebx, edx
and ebx, edi
xor edx, 0xffffffff
and ecx, edx
or ecx, ebx
mov ebx, dword [esp + 0x28]
add cl, 0xa8
mov byte [esp + eax + 0x3c], cl
add eax, 1
jmp 0x4108e3
lea eax, [esp + 0x3c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov ebx, eax
mov dword [esp + 0xd0], 0
cmp ebx, 0
je 0x4109ab
mov dword [esp], ebx
call fcn.00413bf0
mov edi, eax
mov eax, edi
and eax, 1
or edi, 1
add edi, eax
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410982
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
xor ecx, ecx
mov dword [esp + 0xd0], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040a670
mov dword [esp], esi
call fcn.00413bf0
mov edi, eax
mov dword [esp + 0x2b8], edi
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4109d7
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
mov ebx, eax
xor eax, eax
mov dword [esp], ebx
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040a670
xor eax, eax
lea eax, [esp + 0x130]
mov dword [esp], 0
mov dword [esp + 4], ebx
mov ecx, dword [esp + 0x2b8]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x4486a4]
sub esp, 0x18
mov cl, byte [esp + 0x12c]
mov byte [esp + 0x244], cl
mov byte [esp + 0xa2], 0xe6
mov byte [esp + 0xa3], 6
mov byte [esp + 0xa4], 7
mov byte [esp + 0xa5], 0x58
xor ecx, ecx
mov edi, dword [esp + 0x24]
cmp ecx, 4
jae 0x410a8d
mov dl, byte [esp + ecx + 0xa2]
mov dh, cl
add dh, 0x6d
xor dh, dl
add dh, 0x98
mov byte [esp + ecx + 0xa2], dh
add ecx, 1
jmp 0x410a6b
mov ecx, dword [esp + 0xa2]
cmp eax, ecx
je 0x410aa9
jmp 0x410a9a
mov dword [esp], ebx
call fcn.00407f70
jmp 0x410aa4
jmp 0x4111e0
mov eax, dword [esp + 0x130]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410ac6
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
mov esi, dword [0x4486a4]
mov ecx, dword [esp + 0x130]
xor edx, edx
mov dword [esp], 0
mov dword [esp + 4], ebx
mov edx, dword [esp + 0x2b8]
mov dword [esp + 8], edx
mov dword [esp + 0xe0], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [esp + 0x130]
mov dword [esp + 0x14], eax
call esi
sub esp, 0x18
cmp eax, 0
jge 0x410b37
jmp 0x410b19
mov dword [esp], ebx
call fcn.00407f70
mov eax, dword [esp + 0xe0]
jmp 0x410b2a
mov dword [esp], eax
call fcn.00407f70
jmp 0x4111de
jmp 0x410b39
mov dword [esp], ebx
call fcn.00407f70
mov al, byte [esp + 0x128]
mov byte [esp + 0x248], al
mov byte [esp + 0x3a], 0x98
mov byte [esp + 0x3b], 0x37
mov ebx, dword [esp + 0x28]
xor eax, eax
jmp 0x410b61
cmp eax, 2
jae 0x410bc7
movzx edx, byte [esp + eax + 0x3a]
mov edi, eax
add edi, 0x374b1e06
mov ecx, eax
add ecx, 6
and ecx, edx
or edi, edx
xor ecx, edi
mov edx, ecx
and edx, 0xcd
mov edi, ecx
and edi, 2
xor edi, 2
mov ebx, ecx
and ebx, 0xcd
imul ebx, edi
mov edi, ecx
and edi, 2
or edx, 2
imul edx, edi
add edx, ebx
mov ebx, dword [esp + 0x28]
mov edi, ecx
shl edi, 1
and edi, 0x9e
add edi, 0x31
sub ecx, edi
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x3a], cl
add eax, 1
jmp 0x410b61
lea eax, [esp + 0x3a]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov ebx, eax
xor esi, esi
cmp ebx, 0
mov edi, dword [esp + 0x24]
je 0x410c33
mov dword [esp], ebx
call fcn.00413bf0
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410c09
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
mov esi, eax
jmp 0x410c15
xor eax, eax
mov dword [esp], esi
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040a670
mov edi, dword [esp + 0x24]
mov al, byte [esp + 0x124]
mov byte [esp + 0x24c], al
mov byte [esp + 0x38], 0xa1
mov byte [esp + 0x39], 0xda
xor eax, eax
mov ebx, dword [esp + 0x28]
cmp eax, 2
jae 0x410c82
movzx edi, byte [esp + eax + 0x38]
mov ecx, 0xae
sub ecx, eax
or ecx, edi
xor ecx, 0xffffffff
mov edx, 0xae
sub edx, eax
and edx, edi
mov edi, dword [esp + 0x24]
or edx, ecx
add dl, 0x78
mov byte [esp + eax + 0x38], dl
add eax, 1
jmp 0x410c51
lea eax, [esp + 0x38]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401b90
cmp eax, 0
setne al
and al, 1
mov byte [esp + 0x74], al
mov al, byte [esp + 0x120]
mov byte [esp + 0x250], al
mov byte [esp + 0x84], 0x10
mov byte [esp + 0x85], 0x3e
mov byte [esp + 0x86], 0xb7
xor eax, eax
mov ecx, dword [ebp + 8]
cmp eax, 3
jae 0x410d0c
movzx edx, byte [esp + eax + 0x84]
mov ecx, 0xa2
sub ecx, eax
mov edi, 0xa2
sub edi, eax
and ecx, edi
mov edi, dword [esp + 0x24]
or ecx, edx
mov ebx, 0xa2
sub ebx, eax
and ebx, edx
xor ecx, 0xffffffff
or ebx, ecx
add bl, 0x18
mov byte [esp + eax + 0x84], bl
mov ecx, dword [ebp + 8]
add eax, 1
jmp 0x410cc9
mov dword [esp + 0x2dc], esi
lea eax, [esp + 0x84]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401a90
xor ebx, ebx
cmp eax, 0
mov esi, 0
je 0x4110bb
mov dword [esp], eax
mov ebx, eax
call fcn.00401f40
mov esi, eax
mov ecx, 0xc
mov eax, esi
mul ecx
seto cl
add eax, 4
setb ch
xor cl, 0xff
xor ch, 0xff
mov dl, cl
and dl, 0xff
mov dh, ch
and dh, 0xff
or dl, 0
or dh, 0
xor dl, dh
or cl, ch
xor cl, 0xff
and cl, 0xff
or dl, cl
mov ecx, 0xffffffff
test dl, 1
mov dword [esp + 0x348], ebx
jne 0x410d89
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
mov dword [eax], esi
add eax, 4
cmp esi, 0
mov dword [esp + 0x2e4], esi
mov dword [esp + 0x2e0], eax
je 0x410dcd
imul ecx, esi, 0xc
mov edi, eax
add edi, ecx
mov ebx, eax
mov ecx, ebx
call fcn.00413d30
add ebx, 0xc
cmp ebx, edi
jne 0x410db2
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x2e4]
jmp 0x410dcd
xor eax, eax
jmp 0x410dd1
cmp eax, esi
jb 0x410de3
mov ebx, esi
mov esi, dword [esp + 0x2e0]
jmp 0x4110bb
mov ecx, dword [esp + 0x348]
mov dword [esp], ecx
mov dword [esp + 0x344], eax
mov dword [esp + 4], eax
call fcn.00401f50
mov ebx, eax
mov al, byte [esp + 0x11c]
mov byte [esp + 0x254], al
mov byte [esp + 0x81], 0x52
mov byte [esp + 0x82], 0x76
mov byte [esp + 0x83], 0xe9
xor eax, eax
cmp eax, 3
jae 0x410e62
mov dl, byte [esp + eax + 0x81]
mov edi, eax
add edi, 0x8f
mov ecx, 0x10
sub ecx, eax
and ecx, 0x1f
and edi, 0xe0
or ecx, edi
xor cl, dl
xor cl, 0xe0
mov dl, 0x87
sub dl, cl
mov byte [esp + eax + 0x81], dl
add eax, 1
jmp 0x410e27
lea eax, [esp + 0x81]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x340], eax
mov al, byte [esp + 0x118]
mov byte [esp + 0x258], al
mov byte [esp + 0x7e], 0x74
mov byte [esp + 0x7f], 0x18
mov byte [esp + 0x80], 0x93
xor eax, eax
mov dword [esp + 0x2a4], ebx
cmp eax, 3
jae 0x410efa
mov cl, byte [esp + eax + 0x7e]
mov byte [esp + 0x6d], cl
movzx edi, cl
mov ecx, eax
add ecx, 0x78803759
mov ebx, ecx
and ebx, edi
mov edx, ebx
and edx, 0xfd
mov edi, ebx
and edi, 2
xor edi, 2
imul edi, edx
mov edx, ebx
and edx, 2
or ebx, 2
imul ebx, edx
add ebx, edi
sub ecx, ebx
mov ebx, dword [esp + 0x2a4]
add cl, byte [esp + 0x6d]
add cl, 0x38
mov byte [esp + eax + 0x7e], cl
add eax, 1
jmp 0x410ea5
lea eax, [esp + 0x7e]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x32c], eax
mov al, byte [esp + 0x114]
mov byte [esp + 0x25c], al
mov byte [esp + 0x9e], 0xb9
mov byte [esp + 0x9f], 0xa2
mov byte [esp + 0xa0], 0xa5
mov byte [esp + 0xa1], 0x18
xor eax, eax
cmp eax, 4
jae 0x410f6f
mov dl, byte [esp + eax + 0x9e]
mov edi, eax
shl edi, 1
and edi, 0xda
mov ecx, eax
xor ecx, 0x6d
add ecx, edi
xor cl, dl
add cl, 0x98
mov byte [esp + eax + 0x9e], cl
add eax, 1
jmp 0x410f41
lea eax, [esp + 0x9e]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401b90
cmp eax, 0
setg byte [esp + 0x71]
mov al, byte [esp + 0x110]
mov byte [esp + 0x260], al
mov byte [esp + 0x9a], 0x26
mov byte [esp + 0x9b], 0x33
mov byte [esp + 0x9c], 0x24
mov byte [esp + 0x9d], 0x68
xor esi, esi
mov edi, dword [esp + 0x24]
cmp esi, 4
jae 0x411049
movzx edi, byte [esp + esi + 0x9a]
mov ecx, 0xd4901082
sub ecx, esi
or ecx, edi
mov edx, 0xd4901082
sub edx, esi
mov ebx, 0xd4901082
sub ebx, esi
or edx, ebx
mov ebx, edx
xor ebx, 0xffffffff
or ebx, edi
add edx, ebx
mov ebx, edx
add ebx, 1
mov edi, 0xfffffffe
sub edi, edx
mov eax, edi
and eax, 0x5b015cb
and ebx, 0xfa4fea34
or eax, ebx
mov ebx, dword [esp + 0x2a4]
mov edx, ecx
xor edx, eax
xor edx, 0xfa4fea34
or edi, ecx
xor edi, 0xffffffff
or edx, edi
mov edi, dword [esp + 0x24]
add edx, 0xa4808417
mov eax, edx
shl eax, 1
and eax, 2
xor edx, 1
add edx, eax
mov byte [esp + esi + 0x9a], dl
add esi, 1
jmp 0x410fbe
lea eax, [esp + 0x9a]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401b90
xor edx, edx
cmp eax, 0
setg dl
mov esi, dword [esp + 0x344]
imul eax, esi, 0xc
mov ecx, dword [esp + 0x2e0]
add ecx, eax
mov eax, dword [esp + 0x340]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x32c]
mov dword [esp], eax
and edx, 1
mov dword [esp + 0xc], edx
xor eax, eax
mov dl, byte [esp + 0x71]
mov al, dl
and eax, 1
mov dword [esp + 8], eax
call fcn.00413d50
sub esp, 0x10
mov eax, esi
add eax, 1
mov esi, dword [esp + 0x2e4]
jmp 0x410dd1
mov eax, dword [esp + 0x2f8]
mov dword [esp + 0x394], eax
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x398], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 0x39c], eax
mov eax, dword [esp + 0x2dc]
mov dword [esp + 0x3a0], eax
mov al, byte [esp + 0x74]
mov byte [esp + 0x3a4], al
lea ecx, [esp + 0x4b8]
mov dword [esp], 2
call fcn.00408ae0
sub esp, 4
lea eax, [esp + 0x4b8]
lea ecx, [esp + 0x394]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], esi
mov dword [esp + 0xc], ebx
call fcn.00414d40
lea ecx, [esp + 0x4b8]
call fcn.00409700
cmp esi, 0
je 0x411178
mov ebx, esi
add ebx, 0xfffffffc
imul eax, dword [esi - 4], 0xc
mov edi, esi
add edi, eax
cmp esi, edi
je 0x41116a
jmp 0x41115a
add edi, 0xfffffff4
mov ecx, edi
call fcn.00413ed0
cmp edi, esi
jne 0x41115a
jmp 0x41116a
mov dword [esp], ebx
call fcn.00407f70
mov edi, dword [esp + 0x24]
jmp 0x411178
jmp 0x41117a
mov esi, dword [esp + 0x2dc]
mov eax, dword [esp + 0x2f8]
mov dword [esp], eax
call fcn.00407f70
mov eax, dword [esp + 0xe0]
jmp 0x411199
jmp 0x41119b
mov dword [esp], eax
call fcn.00407f70
cmp dword [esp + 0xd0], 0
sete al
test al, 1
jne 0x4111c3
jmp 0x4111b4
mov eax, dword [esp + 0xd0]
mov dword [esp], eax
call fcn.00407f70
cmp esi, 0
je 0x4111d0
mov dword [esp], esi
call fcn.00407f70
lea ecx, [esp + 0x4b8]
call fcn.00408bc0
jmp 0x4111de
jmp 0x4111e0
jmp 0x411c5d
mov al, byte [esp + 0x10c]
mov byte [esp + 0x264], al
mov byte [esp + 0x36], 0x56
mov byte [esp + 0x37], 0xed
xor eax, eax
cmp eax, 2
jae 0x411237
movzx edx, byte [esp + eax + 0x36]
mov ecx, eax
add ecx, 0xc470f8c
mov esi, edi
mov edi, ecx
and edi, edx
shl edi, 1
sub ecx, edi
mov edi, esi
add ecx, edx
mov edx, ecx
xor edx, 0x61
shl ecx, 1
and ecx, 0x3c
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0x36], cl
add eax, 1
jmp 0x4111ff
lea eax, [esp + 0x36]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov esi, eax
mov al, byte [esp + 0x108]
mov byte [esp + 0x268], al
mov byte [esp + 0x34], 0xbc
mov byte [esp + 0x35], 0xd
xor eax, eax
mov dword [esp + 0x24], edi
cmp eax, 2
jae 0x411325
movzx edx, byte [esp + eax + 0x34]
mov ecx, 0x93
sub ecx, eax
and ecx, edx
mov edi, 0x5b2b7093
sub edi, eax
mov ebx, 0x5b2b7093
sub ebx, eax
and edi, ebx
or edi, edx
mov edx, edi
xor edx, 0xffffffff
mov ebx, ecx
add ebx, edx
mov dword [esp + 0x338], esi
mov esi, edi
sub esi, ecx
mov edx, edi
sub edx, ecx
and esi, edx
and esi, 0xd95b849f
xor esi, 0xd95b849f
sub edi, ecx
mov ecx, edi
and ecx, 0xfccc17f1
and ebx, 0x333e80e
or ecx, ebx
mov ebx, dword [esp + 0x28]
xor ecx, 0x2597936e
and edi, 0xd95b849f
xor edi, 0xd95b849f
or ecx, edi
mov edi, dword [esp + 0x24]
add ecx, esi
mov esi, ecx
add esi, 1
mov edx, ecx
xor edx, 0xffffffff
or edx, 1
add edx, esi
mov esi, ecx
and esi, 0xfffffffe
xor esi, 0xfffffffe
and ecx, 0xfffffffe
xor ecx, 0xfffffffe
or ecx, esi
xor ecx, 0xffffffff
mov esi, edx
and esi, ecx
shl esi, 1
xor edx, ecx
add edx, esi
mov esi, dword [esp + 0x338]
mov byte [esp + eax + 0x34], dl
add eax, 1
jmp 0x411267
lea eax, [esp + 0x34]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00401880
mov ebx, eax
test esi, esi
sete al
test ebx, ebx
sete cl
or al, cl
test al, 1
jne 0x411349
jmp 0x41134e
jmp 0x4119a6
mov dword [esp], esi
call fcn.00413bf0
mov edi, eax
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 0x41137c
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
xor ecx, ecx
mov dword [esp + 0x2ec], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040a670
mov dword [esp], ebx
call fcn.00413bf0
mov edi, eax
mov dword [esp + 0x2c4], edi
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4113d1
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
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.0040a670
xor eax, eax
lea eax, [esp + 0x104]
mov dword [esp], 0
mov dword [esp + 0xc4], esi
mov dword [esp + 4], esi
mov ecx, dword [esp + 0x2c4]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x4486a4]
sub esp, 0x18
mov cl, byte [esp + 0x100]
mov byte [esp + 0x26c], cl
mov byte [esp + 0x96], 0xa5
mov byte [esp + 0x97], 0xc7
mov byte [esp + 0x98], 0xc8
mov byte [esp + 0x99], 9
xor ecx, ecx
cmp ecx, 4
jae 0x4114b5
movzx ebx, byte [esp + ecx + 0x96]
mov edi, 0x79bfa289
sub edi, ecx
or edi, ebx
mov edx, 0x89
sub edx, ecx
mov esi, 0x89
sub esi, ecx
or edx, esi
and edx, ebx
xor edi, 0xffffffff
or edx, edi
mov ebx, edx
and ebx, 1
xor ebx, 1
mov esi, 0xb0
sub esi, edx
or esi, 1
sub ebx, esi
mov byte [esp + ecx + 0x96], bl
add ecx, 1
jmp 0x411468
mov ecx, dword [esp + 0x96]
cmp eax, ecx
mov edi, dword [esp + 0x24]
je 0x4114da
jmp 0x4114c6
mov eax, dword [esp + 0xc4]
mov dword [esp], eax
call fcn.00407f70
jmp 0x4119a4
mov eax, dword [esp + 0x104]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4114f7
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
mov esi, eax
mov eax, dword [0x4486a4]
mov ecx, dword [esp + 0x104]
xor edx, edx
lea edx, [esp + 0x104]
mov dword [esp], 0
mov ebx, dword [esp + 0xc4]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x2c4]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call eax
sub esp, 0x18
cmp eax, 0
mov ebx, dword [esp + 0x28]
jge 0x41156d
jmp 0x41154f
mov eax, dword [esp + 0xc4]
mov dword [esp], eax
call fcn.00407f70
jmp 0x411560
mov dword [esp], esi
call fcn.00407f70
jmp 0x4119a2
jmp 0x41156f
mov eax, dword [esp + 0xc4]
mov dword [esp], eax
call fcn.00407f70
mov al, byte [esp + 0xfc]
mov byte [esp + 0x270], al
mov byte [esp + 0x32], 0xf8
mov byte [esp + 0x33], 0x91
xor eax, eax
mov dword [esp + 0xcc], esi
cmp eax, 2
jae 0x4115e5
movzx edx, byte [esp + eax + 0x32]
mov ecx, eax
add ecx, 0x97b4ae10
xor ecx, edx
add ecx, 0x425a8f7f
mov esi, ecx
shl esi, 1
and esi, 2
xor ecx, 0x4f0d3581
mov edx, ecx
add edx, esi
mov esi, dword [esp + 0xcc]
and ecx, 1
or edx, 1
add edx, ecx
add dl, 0x7f
mov byte [esp + eax + 0x32], dl
add eax, 1
jmp 0x41159f
lea eax, [esp + 0x32]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401b90
cmp eax, 0
setne al
and al, 1
mov byte [esp + 0x73], al
mov al, byte [esp + 0xf8]
mov byte [esp + 0x274], al
mov byte [esp + 0x7b], 0x30
mov byte [esp + 0x7c], 6
mov byte [esp + 0x7d], 0x8f
xor eax, eax
mov ebx, dword [ebp + 8]
cmp eax, 3
jae 0x411685
movzx edi, byte [esp + eax + 0x7b]
mov ecx, eax
shl ecx, 1
and ecx, 0xfedf7d4a
mov edx, eax
xor edx, 0xff6fbea5
add edx, ecx
mov ecx, edi
shl ecx, 1
xor ecx, 0xffffffff
add ecx, edi
mov esi, edi
xor esi, 0xffffffff
or ecx, esi
and ecx, edx
mov esi, edi
shl esi, 1
xor esi, 0xffffffff
add esi, edi
or edx, esi
mov esi, dword [esp + 0xcc]
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
xor edx, 0x29
shl ecx, 1
and ecx, 0xac
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0x7b], cl
add eax, 1
jmp 0x411623
lea eax, [esp + 0x7b]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401a90
mov dword [esp + 0x2d0], eax
cmp eax, 0
setne al
mov edi, dword [esp + 0x24]
xor ebx, ebx
test al, 1
mov ecx, 0
jne 0x4116b6
jmp 0x4118ba
mov eax, dword [esp + 0x2d0]
mov dword [esp], eax
call fcn.00401f40
mov ecx, 8
mov dword [esp + 0xd8], eax
mul ecx
seto cl
add eax, 4
setb dl
mov ch, cl
xor ch, 0xff
mov dh, dl
xor dh, 0xff
and ch, dh
or dl, cl
xor dl, 0xff
or dl, ch
xor dl, 0xff
mov ecx, 0xffffffff
test dl, 1
jne 0x4116fe
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
mov ebx, eax
mov ecx, dword [esp + 0xd8]
mov dword [ebx], ecx
add ebx, 4
cmp ecx, 0
sete al
jmp 0x41171c
test al, 1
mov dword [esp + 0x2d4], ebx
jne 0x411756
jmp 0x411729
mov eax, ecx
shl eax, 3
mov edi, ebx
mov ebx, edi
add ebx, eax
mov ecx, edi
call fcn.00413f00
add edi, 8
cmp edi, ebx
jne 0x411734
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x2d4]
mov ecx, dword [esp + 0xd8]
jmp 0x411756
xor edx, edx
jmp 0x41175a
cmp edx, ecx
setb al
mov esi, dword [esp + 0xcc]
test al, 1
jne 0x411771
jmp 0x41176c
jmp 0x4118ba
mov eax, dword [esp + 0x2d0]
mov dword [esp], eax
mov dword [esp + 0x330], edx
mov dword [esp + 4], edx
call fcn.00401f50
mov dword [esp + 0x2b4], eax
mov al, byte [esp + 0xf4]
mov byte [esp + 0x278], al
mov byte [esp + 0x78], 0xb5
mov byte [esp + 0x79], 0xbf
mov byte [esp + 0x7a], 0xd2
xor eax, eax
jmp 0x4117b3
cmp eax, 3
jae 0x41180c
movzx ebx, byte [esp + eax + 0x78]
mov ecx, eax
add ecx, 0x497bc650
mov edx, ecx
and edx, ebx
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
mov edi, dword [esp + 0x24]
mov esi, ecx
and esi, ebx
shl esi, 1
xor ecx, ebx
mov ebx, dword [esp + 0x2d4]
add ecx, esi
sub ecx, edx
xor cl, 0x80
mov byte [esp + eax + 0x78], cl
add eax, 1
jmp 0x4117b3
lea eax, [esp + 0x78]
mov ecx, dword [esp + 0x2b4]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x314], eax
mov al, byte [esp + 0xf0]
mov byte [esp + 0x27c], al
mov byte [esp + 0x75], 0x86
mov byte [esp + 0x76], 0xee
mov byte [esp + 0x77], 0x65
xor eax, eax
cmp eax, 3
jae 0x411865
mov cl, byte [esp + eax + 0x75]
mov dl, al
add dl, 0xbb
xor dl, cl
add dl, 0x28
mov byte [esp + eax + 0x75], dl
add eax, 1
jmp 0x411849
lea eax, [esp + 0x75]
mov ecx, dword [esp + 0x2b4]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov esi, dword [esp + 0x330]
mov edx, esi
shl edx, 3
mov ecx, ebx
add ecx, edx
mov dword [esp], eax
mov eax, dword [esp + 0x314]
mov dword [esp + 4], eax
call fcn.00413f10
sub esp, 8
mov edx, esi
mov eax, edx
and eax, 1
or edx, 1
add edx, eax
mov ecx, dword [esp + 0xd8]
jmp 0x41175a
mov eax, dword [esp + 0x2ec]
mov dword [esp + 0x380], eax
mov dword [esp + 0x384], 0
mov dword [esp + 0x388], esi
mov dword [esp + 0x38c], 0
mov al, byte [esp + 0x73]
mov byte [esp + 0x390], al
mov esi, ecx
lea ecx, [esp + 0x430]
mov dword [esp], 3
call fcn.00408ae0
sub esp, 4
lea eax, [esp + 0x430]
lea ecx, [esp + 0x380]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
call fcn.0041f040
lea ecx, [esp + 0x430]
call fcn.00409700
cmp ebx, 0
je 0x411974
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 0x411966
mov esi, eax
jmp 0x411956
add ebx, 0xfffffff8
mov ecx, ebx
call fcn.00413fe0
cmp ebx, esi
jne 0x411956
jmp 0x411966
mov dword [esp], edi
call fcn.00407f70
mov edi, dword [esp + 0x24]
jmp 0x411974
mov eax, dword [esp + 0xcc]
jmp 0x41197d
mov dword [esp], eax
call fcn.00407f70
jmp 0x411987
mov eax, dword [esp + 0x2ec]
mov dword [esp], eax
call fcn.00407f70
lea ecx, [esp + 0x430]
call fcn.00408bc0
jmp 0x4119a4
jmp 0x4119a6
jmp 0x411c5d
mov al, byte [esp + 0xec]
mov byte [esp + 0x280], al
mov byte [esp + 0x30], 0xd
mov byte [esp + 0x31], 0xbe
xor eax, eax
cmp eax, 2
jae 0x4119eb
movzx edx, byte [esp + eax + 0x30]
mov esi, eax
add esi, 0x15
mov ecx, eax
add ecx, 0x15
or ecx, edx
and esi, edx
sub ecx, esi
add cl, 0x58
mov byte [esp + eax + 0x30], cl
add eax, 1
jmp 0x4119c5
mov dword [esp + 0x24], edi
lea eax, [esp + 0x30]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x334], eax
mov al, byte [esp + 0xe8]
mov byte [esp + 0x284], al
mov byte [esp + 0x2e], 0x5e
mov byte [esp + 0x2f], 0xa9
xor eax, eax
cmp eax, 2
jae 0x411a5e
movzx edi, byte [esp + eax + 0x2e]
mov edx, eax
add edx, 0xb57d35e8
mov ecx, 0x17
sub ecx, eax
and ecx, 0xdb
mov esi, edx
and esi, 0x24
or ecx, esi
xor ecx, 0xdb
and ecx, edi
or edx, edi
xor ecx, edx
add cl, 0xc0
mov byte [esp + eax + 0x2e], cl
add eax, 1
jmp 0x411a20
lea eax, [esp + 0x2e]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0xd4], eax
mov al, byte [esp + 0xe4]
mov byte [esp + 0x288], al
mov byte [esp + 0x2c], 0xe3
mov byte [esp + 0x2d], 0x6a
xor eax, eax
mov edi, dword [esp + 0x24]
cmp eax, 2
jae 0x411ac4
mov dl, byte [esp + eax + 0x2c]
mov esi, eax
add esi, 0x61
mov ecx, 0x1e
sub ecx, eax
and ecx, 0x60
and esi, 0x9f
or ecx, esi
xor cl, dl
xor cl, 0x60
add cl, 0xf8
mov byte [esp + eax + 0x2c], cl
add eax, 1
jmp 0x411a93
lea eax, [esp + 0x2c]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00401880
mov esi, dword [esp + 0x334]
test esi, esi
sete dl
cmp dword [esp + 0xd4], 0
sete cl
or dl, cl
test eax, eax
sete cl
or dl, cl
test dl, 1
jne 0x411afb
jmp 0x411b00
jmp 0x411c5b
mov dword [esp + 0x328], eax
mov dword [esp], esi
call fcn.00413bf0
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411b2c
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
xor ecx, ecx
mov dword [esp + 0x324], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040a670
mov eax, dword [esp + 0xd4]
mov dword [esp], eax
call fcn.00413bf0
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 0x411b8a
mov ecx, eax
mov dword [esp], ecx
call fcn.00407f60
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], ebx
mov eax, dword [esp + 0xd4]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a670
lea eax, [esp + 0x37c]
mov esi, dword [esp + 0x324]
mov dword [esp], esi
mov dword [esp + 4], edi
mov dword [esp + 8], eax
call fcn.004370b0
mov ebx, eax
cmp ebx, 0
setne al
test al, 1
jne 0x411be1
jmp 0x411c41
lea ecx, [esp + 0x3a8]
mov dword [esp], 1
call fcn.00408ae0
sub esp, 4
mov eax, dword [esp + 0x37c]
lea ecx, [esp + 0x3a8]
mov edx, dword [esp + 0x328]
mov dword [esp], edx
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
call fcn.00408ee0
sub esp, 0xc
lea ecx, [esp + 0x3a8]
call fcn.00409700
jmp 0x411c2d
mov dword [esp], ebx
call fcn.00407f70
lea ecx, [esp + 0x3a8]
call fcn.00408bc0
jmp 0x411c43
mov dword [esp], edi
call fcn.00407f70
mov edi, dword [esp + 0x24]
jmp 0x411c51
jmp 0x411c53
mov dword [esp], esi
call fcn.00407f70
jmp 0x411c5d
mov esi, dword [esp + 0x364]
jmp 0x411c66
add edi, 1
jmp 0x40eea1
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret