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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x610
mov al, byte [esp + 0x210]
mov byte [esp + 0x214], al
mov byte [esp + 0xc4], 0x8b
mov byte [esp + 0xc5], 0x69
mov eax, 2
mov byte [esp + eax + 0xc4], 0
add eax, 1
cmp eax, 4
jne 0x40f7e2
xor eax, eax
cmp eax, 4
jae 0x40f83c
movzx ecx, byte [esp + eax + 0xc4]
mov edx, eax
add edx, 0x28
mov esi, ecx
add esi, 1
mov edi, ecx
xor edi, 0xffffffff
or edx, edi
add edx, esi
shl edx, 1
add ecx, eax
mov ebx, ecx
add ebx, 0x57
sub ebx, edx
and ecx, 1
xor ecx, 1
or ebx, 1
add ebx, 0x90
add ebx, ecx
mov byte [esp + eax + 0xc4], bl
add eax, 1
jmp 0x40f7f4
lea eax, [esp + 0xc4]
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401af0
mov esi, eax
cmp esi, 0
jne 0x40f860
xor eax, eax
jmp 0x4127eb
xor ebx, ebx
jmp 0x40f864
mov dword [esp], esi
call fcn.00402040
cmp ebx, eax
jb 0x40f877
mov al, 1
jmp 0x4127eb
mov dword [esp], esi
mov dword [esp + 4], ebx
call fcn.00402050
mov dword [esp + 0x20], eax
mov al, byte [esp + 0x20c]
mov byte [esp + 0x218], al
mov byte [esp + 0x42], 0xf3
mov byte [esp + 0x43], 0x58
xor eax, eax
cmp eax, 2
jae 0x40f8c9
mov dl, byte [esp + eax + 0x42]
mov edi, eax
shl edi, 1
and edi, 0x3e
mov ecx, eax
xor ecx, 0x9f
add ecx, edi
xor cl, dl
add cl, 8
mov byte [esp + eax + 0x42], cl
add eax, 1
jmp 0x40f8a1
lea eax, [esp + 0x42]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401f20
cmp eax, 0
setne al
xor al, 0xff
and al, 1
or al, 0
test al, 1
jne 0x40f8f7
jmp 0x40f8fc
jmp 0x4127e3
mov al, byte [esp + 0x208]
mov byte [esp + 0x21c], al
mov byte [esp + 0xc0], 0x33
mov byte [esp + 0xc1], 0x98
mov eax, 2
mov byte [esp + eax + 0xc0], 0
add eax, 1
cmp eax, 4
jne 0x40f91f
mov dword [esp + 0x24], ebx
xor eax, eax
cmp eax, 4
jae 0x40f980
movzx edi, byte [esp + eax + 0xc0]
mov edx, 0x4766da0
sub edx, eax
or edx, edi
mov ecx, 0xa0
sub ecx, eax
and ecx, edi
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
and edx, 7
mov edi, ecx
and edi, 0xf8
mov ebx, ecx
xor ebx, 7
add ecx, ebx
sub ecx, edi
add ecx, edx
add cl, 1
mov byte [esp + eax + 0xc0], cl
add eax, 1
jmp 0x40f935
lea eax, [esp + 0xc0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.004019c0
fnstcw word [esp + 0x82]
movzx eax, word [esp + 0x82]
or eax, 0xc00
mov word [esp + 0x2e6], ax
fldcw word [esp + 0x2e6]
fistp dword [esp + 0x3bc]
fldcw word [esp + 0x82]
mov eax, dword [esp + 0x3bc]
mov ecx, eax
sub ecx, 3
mov ebx, dword [esp + 0x24]
ja 0x4127e1
mov eax, dword [eax*4 + 0x441588]
jmp eax
mov al, byte [esp + 0x204]
mov byte [esp + 0x220], al
mov byte [esp + 0xbc], 0xee
mov byte [esp + 0xbd], 0x7f
mov eax, 2
mov byte [esp + eax + 0xbc], 0
add eax, 1
cmp eax, 3
jne 0x40fa0a
xor eax, eax
cmp eax, 3
jae 0x40fa50
mov dl, byte [esp + eax + 0xbc]
movzx edi, dl
mov ecx, eax
add ecx, 0xfe89f30e
mov ebx, ecx
and ebx, edi
shl ebx, 1
sub ecx, ebx
mov ebx, dword [esp + 0x24]
add cl, dl
add cl, 0x90
mov byte [esp + eax + 0xbc], cl
add eax, 1
jmp 0x40fa1c
lea eax, [esp + 0xbc]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f20
cmp eax, 0
setne al
test al, 1
jne 0x40fa7e
jmp 0x40fd89
mov al, byte [esp + 0x200]
mov byte [esp + 0x224], al
mov byte [esp + 0xda], 0x10
mov byte [esp + 0xdb], 0x16
mov byte [esp + 0xdc], 0x17
mov byte [esp + 0xdd], 0xe8
mov eax, 4
mov byte [esp + eax + 0xda], 0
add eax, 1
cmp eax, 6
jne 0x40fab1
xor eax, eax
cmp eax, 6
jae 0x40faf9
movzx edx, byte [esp + eax + 0xda]
mov ecx, eax
add ecx, 0xfd
mov edi, edx
xor edi, 0xffffffff
and ecx, edi
mov edi, 2
sub edi, eax
and edi, edx
or ecx, edi
add cl, 0x18
mov byte [esp + eax + 0xda], cl
add eax, 1
jmp 0x40fac3
mov eax, dword [esp + 0xda]
mov dword [esp + 0x368], eax
mov cl, byte [esp + 0x1fc]
mov byte [esp + 0x228], cl
mov byte [esp + 0x40], 0x11
mov byte [esp + 0x41], 0xbd
xor ecx, ecx
cmp ecx, 2
jae 0x40fbb0
movzx edi, byte [esp + ecx + 0x40]
mov edx, ecx
add edx, 1
mov ebx, ecx
xor ebx, 0xffffffff
or ebx, 0xb8b8945c
add ebx, edx
mov edx, ebx
and edx, 2
xor edx, 2
mov eax, ebx
and eax, 0xfffffffd
imul eax, edx
mov edx, ebx
and edx, 2
or ebx, 2
imul ebx, edx
add ebx, eax
mov edx, ecx
xor edx, 0xb8b8945c
add edx, ebx
mov ebx, edx
and ebx, edi
shl ebx, 1
mov eax, edx
and eax, edi
shl eax, 1
xor edx, edi
add edx, eax
mov eax, edx
xor eax, ebx
xor ebx, 0xffffffff
and edx, ebx
shl edx, 1
sub edx, eax
mov eax, edx
shl eax, 1
and eax, 0x3e
xor edx, 0x3a3b5d1f
mov ebx, edx
add ebx, eax
and edx, 1
or ebx, 1
add ebx, edx
mov byte [esp + ecx + 0x40], bl
mov eax, ecx
shl eax, 1
or ecx, eax
xor ecx, 1
jmp 0x40fb21
lea eax, [esp + 0x40]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x368]
mov dword [esp + 8], eax
call fcn.00401f20
mov ebx, dword [esp + 0x24]
cmp eax, 0
setne al
test al, 1
jne 0x40fbe2
jmp 0x40fd89
mov al, byte [esp + 0x1f8]
mov byte [esp + 0x22c], al
mov byte [esp + 0xb8], 0x1a
mov byte [esp + 0xb9], 0x61
mov eax, 2
mov byte [esp + eax + 0xb8], 0
add eax, 1
cmp eax, 3
jne 0x40fc05
xor eax, eax
cmp eax, 3
jae 0x40fc47
movzx edx, byte [esp + eax + 0xb8]
mov ecx, eax
add ecx, 0x60
mov edi, eax
add edi, 0x60
or ecx, edi
and ecx, edx
mov edi, eax
add edi, 0x60
or edi, edx
xor ecx, edi
mov byte [esp + eax + 0xb8], cl
add eax, 1
jmp 0x40fc17
lea eax, [esp + 0xb8]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f20
cmp eax, 0
je 0x40fd89
mov al, byte [esp + 0x1f4]
mov byte [esp + 0x230], al
mov byte [esp + 0x3e], 0x84
mov byte [esp + 0x3f], 0xe1
xor eax, eax
cmp eax, 2
jae 0x40fcc6
movzx edx, byte [esp + eax + 0x3e]
mov ecx, 0x1f
sub ecx, eax
mov edi, 0x1f
sub edi, eax
and ecx, edi
mov ebx, 0x1f
sub ebx, eax
and ebx, edx
or ecx, edx
xor ecx, 0xffffffff
or ebx, ecx
mov byte [esp + eax + 0x3e], bl
mov ebx, dword [esp + 0x24]
mov ecx, eax
shl ecx, 1
or eax, ecx
xor eax, 1
jmp 0x40fc89
lea eax, [esp + 0x3e]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401f20
cmp eax, 0
je 0x40fd89
mov al, byte [esp + 0x1f0]
mov byte [esp + 0x234], al
mov byte [esp + 0x11e], 0xed
mov byte [esp + 0x11f], 0x1f
mov byte [esp + 0x120], 0x8d
mov eax, 3
mov byte [esp + eax + 0x11e], 0
add eax, 1
cmp eax, 6
jne 0x40fd16
xor eax, eax
cmp eax, 6
jae 0x40fd5b
movzx edx, byte [esp + eax + 0x11e]
mov ecx, eax
add ecx, 0x13
mov edi, edx
xor edi, 0xffffffff
and ecx, edi
mov edi, 0xec
sub edi, eax
and edi, edx
or ecx, edi
add cl, 0x68
mov byte [esp + eax + 0x11e], cl
add eax, 1
jmp 0x40fd28
lea eax, [esp + 0x11e]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
mov dword [esp + 8], 3
call fcn.00401f20
test eax, eax
sete al
test al, 1
jne 0x4127e1
jmp 0x40fd8e
jmp 0x4127e1
mov al, byte [esp + 0x1ec]
mov byte [esp + 0x238], al
mov byte [esp + 0xb4], 0x53
mov byte [esp + 0xb5], 0xc4
mov eax, 2
mov byte [esp + eax + 0xb4], 0
add eax, 1
cmp eax, 3
jne 0x40fdb1
xor eax, eax
cmp eax, 3
jae 0x40fde5
mov cl, byte [esp + eax + 0xb4]
mov dl, al
add dl, 0x1b
xor dl, cl
add dl, 0x28
mov byte [esp + eax + 0xb4], dl
add eax, 1
jmp 0x40fdc3
lea eax, [esp + 0xb4]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x310], eax
mov al, byte [esp + 0x1e8]
mov byte [esp + 0x23c], al
mov byte [esp + 0x3c], 0xd5
mov byte [esp + 0x3d], 0x39
xor edx, edx
cmp edx, 2
jae 0x40fe7a
movzx edi, byte [esp + edx + 0x3c]
mov eax, edx
add eax, 0xf8
mov ecx, edi
and ecx, 0x3b
xor ecx, 0x3b
mov ebx, edi
xor ebx, 0x7b2ee23b
or edi, 0xc4
and edi, ebx
mov ebx, 7
sub ebx, edx
and ebx, 0x3b
and eax, 0xc4
mov dword [esp + 0x33c], eax
mov eax, edi
and eax, 0x3b
add ecx, edi
sub ecx, eax
or ebx, dword [esp + 0x33c]
xor ecx, ebx
add cl, 0x40
mov byte [esp + edx + 0x3c], cl
add edx, 1
jmp 0x40fe1d
lea eax, [esp + 0x3c]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401af0
mov cl, byte [esp + 0x1e4]
mov byte [esp + 0x240], cl
mov byte [esp + 0xb0], 0x37
mov byte [esp + 0xb1], 0xbe
mov ecx, 2
mov byte [esp + ecx + 0xb0], 0
add ecx, 1
cmp ecx, 4
jne 0x40feb1
mov dword [esp + 0xf0], eax
xor eax, eax
cmp eax, 4
jae 0x40fef6
movzx edx, byte [esp + eax + 0xb0]
mov ecx, eax
add ecx, 0x15
and ecx, edx
mov edi, eax
add edi, 0x15
or edi, edx
xor ecx, edi
add cl, 0x58
mov byte [esp + eax + 0xb0], cl
add eax, 1
jmp 0x40feca
lea eax, [esp + 0xb0]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x318], eax
mov al, byte [esp + 0x1e0]
mov byte [esp + 0x244], al
mov byte [esp + 0x3a], 0x9d
mov byte [esp + 0x3b], 0xfa
xor eax, eax
cmp eax, 2
jae 0x40ff8d
movzx ecx, byte [esp + eax + 0x3a]
mov dword [esp + 0x348], ecx
mov ecx, eax
add ecx, 0x281d9771
mov ebx, ecx
shl ebx, 1
mov edi, eax
add edi, 0x70
sub edi, ebx
mov ebx, 0x8e
sub ebx, eax
mov edx, 0x8e
sub edx, eax
or ebx, edx
and edi, ebx
mov edx, 0x8e
sub edx, eax
mov ebx, dword [esp + 0x348]
and edx, ebx
xor ecx, ebx
add ecx, ebx
sub ecx, edx
xor ebx, 0xffffffff
or edi, ebx
and ecx, edi
add cl, 0x78
mov byte [esp + eax + 0x3a], cl
add eax, 1
jmp 0x40ff2e
lea eax, [esp + 0x3a]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.004019c0
fnstcw word [esp + 0x80]
movzx eax, word [esp + 0x80]
or eax, 0xc00
mov word [esp + 0x2e4], ax
fldcw word [esp + 0x2e4]
fistp dword [esp + 0x3b0]
fldcw word [esp + 0x80]
mov eax, dword [esp + 0x3b0]
mov dword [esp + 0x398], eax
mov al, byte [esp + 0x1dc]
mov byte [esp + 0x248], al
mov byte [esp + 0x118], 0xd2
mov byte [esp + 0x119], 0xc6
mov byte [esp + 0x11a], 0x76
mov eax, 3
mov byte [esp + eax + 0x118], 0
add eax, 1
cmp eax, 5
jne 0x41000b
xor eax, eax
cmp eax, 5
jae 0x4100b8
movzx edi, byte [esp + eax + 0x118]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x54]
add eax, 0x14
mov ecx, 0x4aef262b
sub ecx, dword [esp + 0x54]
mov edx, edi
xor edx, 0xffffffff
mov ebx, ecx
and ebx, edx
mov edx, ecx
xor edx, edi
add ecx, edx
mov edx, 0x2b
sub edx, dword [esp + 0x54]
and edx, 0xc4
and eax, 0x3b
or edx, eax
xor edx, 0x3b
mov eax, 0x2b
sub eax, dword [esp + 0x54]
or edx, eax
and edx, edi
mov eax, ecx
xor eax, 0xffffffff
mov edi, ebx
mov ebx, edi
add ebx, eax
sub ecx, edi
mov edi, ecx
and edi, 0x88
and ebx, 0x77
or edi, ebx
mov eax, edx
xor eax, edi
xor eax, 0x88
xor ecx, 0xffffffff
and edx, ecx
or eax, edx
add al, 0x60
mov ecx, dword [esp + 0x54]
mov byte [esp + ecx + 0x118], al
mov eax, dword [esp + 0x54]
add eax, 1
jmp 0x41001d
lea eax, [esp + 0x118]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.004019c0
fnstcw word [esp + 0x7e]
movzx eax, word [esp + 0x7e]
or eax, 0xc00
mov word [esp + 0x2e2], ax
fldcw word [esp + 0x2e2]
fistp dword [esp + 0x3ac]
fldcw word [esp + 0x7e]
mov eax, dword [esp + 0x3ac]
mov dword [esp + 0x394], eax
mov al, byte [esp + 0x1d8]
mov byte [esp + 0x24c], al
mov byte [esp + 0x112], 0x50
mov byte [esp + 0x113], 0x5b
mov byte [esp + 0x114], 0xf8
mov eax, 3
mov byte [esp + eax + 0x112], 0
add eax, 1
cmp eax, 6
jne 0x410130
xor eax, eax
cmp eax, 6
jae 0x41017d
movzx edx, byte [esp + eax + 0x112]
mov ecx, eax
add ecx, 0x4e4fddc6
mov edi, ecx
xor edi, edx
mov ebx, edi
shl ebx, 1
xor ebx, 0xffffffff
add edi, ebx
mov ebx, ecx
and ebx, edi
shl ebx, 1
add ecx, edx
sub ecx, ebx
add cl, 0xd0
mov byte [esp + eax + 0x112], cl
add eax, 1
jmp 0x410142
lea eax, [esp + 0x112]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401c20
cmp eax, 0
setg byte [esp + 0x51]
mov eax, dword [esp + 0x310]
mov dword [esp], eax
call fcn.004149f0
mov ebx, eax
mov dword [esp + 0x300], ebx
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4101cf
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x310]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ada0
xor eax, eax
lea eax, [esp + 0x1d4]
mov dword [esp], 0
mov dword [esp + 0xec], edi
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x300]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x44ae9c]
sub esp, 0x18
mov dword [esp + 0x35c], eax
mov cl, byte [esp + 0x1d0]
mov byte [esp + 0x250], cl
mov byte [esp + 0x6c], 0x66
mov byte [esp + 0x6d], 0x86
mov byte [esp + 0x6e], 0x87
mov byte [esp + 0x6f], 0xd8
xor eax, eax
cmp eax, 4
jae 0x4102dc
movzx ebx, byte [esp + eax + 0x6c]
mov edx, 0x12
sub edx, eax
mov edi, 0x12
sub edi, eax
and edx, edi
xor edx, 0xffffffff
and edx, ebx
mov edi, 0x760bd812
sub edi, eax
xor ebx, 0xffffffff
and edi, ebx
or edx, edi
mov edi, edx
xor edi, 0xffffffff
mov ebx, edi
and ebx, 0x95
mov ecx, edi
and ecx, 0x95
mov dword [esp + 0x350], eax
mov eax, edx
and eax, 2
imul eax, ecx
and edi, 2
or ebx, 2
imul ebx, edi
add ebx, eax
mov eax, dword [esp + 0x350]
xor edx, 0x68
add edx, ebx
add dl, 1
mov byte [esp + eax + 0x6c], dl
add eax, 1
jmp 0x410268
mov eax, dword [esp + 0x6c]
cmp dword [esp + 0x35c], eax
mov ebx, dword [esp + 0x24]
je 0x410303
jmp 0x4102ef
mov eax, dword [esp + 0xec]
mov dword [esp], eax
call fcn.00408630
jmp 0x410568
mov eax, dword [esp + 0x1d4]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410320
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
mov edi, eax
mov eax, dword [0x44ae9c]
mov ecx, dword [esp + 0x1d4]
xor edx, edx
mov dword [esp], 0
mov edx, dword [esp + 0xec]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x300]
mov dword [esp + 8], edx
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x1d4]
mov dword [esp + 0x14], ecx
call eax
sub esp, 0x18
cmp eax, 0
jge 0x41038a
jmp 0x410374
mov eax, dword [esp + 0xec]
mov dword [esp], eax
call fcn.00408630
jmp 0x410385
jmp 0x410566
jmp 0x41038c
mov dword [esp + 0x304], edi
mov eax, dword [esp + 0xec]
mov dword [esp], eax
call fcn.00408630
mov eax, dword [esp + 0x318]
mov dword [esp], eax
call fcn.004149f0
mov edi, eax
and edi, 1
or eax, 1
add edi, eax
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4103d3
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
xor ecx, ecx
mov dword [esp + 0x2f4], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esp + 0x318]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ada0
lea ecx, [esp + 0x580]
mov dword [esp], 1
call fcn.00409080
sub esp, 4
xor edi, edi
mov eax, dword [esp + 0xf0]
jmp 0x410424
mov dword [esp], eax
call fcn.00402040
cmp edi, eax
jb 0x410435
jmp 0x41052a
mov eax, dword [esp + 0xf0]
mov dword [esp], eax
mov dword [esp + 0x2f0], edi
mov dword [esp + 4], edi
call fcn.00402020
mov dword [esp], eax
call fcn.004019a0
mov ebx, eax
cmp ebx, 0
jne 0x41046a
mov eax, dword [esp + 0xf0]
jmp 0x410512
mov dword [esp], ebx
call fcn.004149f0
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41048f
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], edi
mov edi, eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov eax, dword [esp + 0x398]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x394]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edi
mov eax, dword [esp + 0x304]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x2f4]
mov dword [esp + 4], eax
lea eax, [esp + 0x580]
mov dword [esp], eax
xor eax, eax
mov cl, byte [esp + 0x51]
mov al, cl
and eax, 1
mov dword [esp + 0x18], eax
call fcn.00421020
mov dword [esp], edi
call fcn.00408630
mov eax, dword [esp + 0xf0]
jmp 0x410512
sub dword [esp + 0x2f0], 0xffffffff
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x2f0]
jmp 0x410424
mov edi, dword [esp + 0x304]
mov eax, dword [esp + 0x2f4]
mov dword [esp], eax
call fcn.00408630
jmp 0x410542
jmp 0x410544
mov dword [esp], edi
call fcn.00408630
jmp 0x41054e
lea ecx, [esp + 0x580]
call fcn.00409c50
lea ecx, [esp + 0x580]
call fcn.00409160
jmp 0x410568
jmp 0x4127e1
mov al, byte [esp + 0x1cc]
mov byte [esp + 0x254], al
mov byte [esp + 0xac], 0x4f
mov byte [esp + 0xad], 0xa9
mov eax, 2
mov byte [esp + eax + 0xac], 0
add eax, 1
cmp eax, 4
jne 0x410590
xor eax, eax
cmp eax, 4
jae 0x41061f
mov dl, byte [esp + eax + 0xac]
mov edi, eax
add edi, 0xe8
mov ecx, 0x17
sub ecx, eax
and ecx, 0x13
and edi, 0xec
mov ebx, 0x17
sub ebx, eax
and ebx, 0xec
xor ebx, 0xec
or edi, ebx
or ecx, edi
xor cl, dl
xor cl, 0x13
add cl, 0xc0
mov byte [esp + eax + 0xac], cl
mov edx, eax
add edx, 1
mov ecx, eax
xor ecx, 0xffffffff
or ecx, 1
add ecx, edx
mov edi, ecx
and edi, 0xfffffffd
mov edx, ecx
and edx, 2
xor edx, 2
imul edx, edi
mov edi, ecx
and edi, 2
or ecx, 2
imul ecx, edi
add edx, ecx
xor eax, 1
add eax, edx
jmp 0x4105a2
lea eax, [esp + 0xac]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f20
cmp eax, 0
mov ebx, dword [esp + 0x24]
je 0x4109d0
mov al, byte [esp + 0x1c8]
mov byte [esp + 0x258], al
mov byte [esp + 0xa8], 0x51
mov byte [esp + 0xa9], 0xa2
mov eax, 2
mov byte [esp + eax + 0xa8], 0
add eax, 1
cmp eax, 4
jne 0x41066e
xor eax, eax
cmp eax, 4
jae 0x4106b0
mov cl, byte [esp + eax + 0xa8]
mov dl, al
add dl, 0xe9
xor dl, cl
add dl, 0xb8
mov byte [esp + eax + 0xa8], dl
mov ecx, eax
xor ecx, 0xfffffffe
mov edx, eax
or edx, 1
and edx, ecx
or eax, 1
add eax, edx
jmp 0x410680
jmp 0x4106b2
lea eax, [esp + 0xa8]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f20
cmp eax, 0
je 0x4109d0
mov al, byte [esp + 0x1c4]
mov byte [esp + 0x25c], al
mov byte [esp + 0x38], 0x80
mov byte [esp + 0x39], 0x3e
xor eax, eax
jmp 0x4106f6
cmp eax, 2
jae 0x41078a
movzx ecx, byte [esp + eax + 0x38]
mov edx, eax
add edx, 1
mov edi, eax
xor edi, 0xffffffff
or edi, 0xf0806895
add edi, edx
mov edx, edi
and edx, 2
xor edx, 2
mov ebx, edi
and ebx, 0xfffffffd
imul ebx, edx
mov edx, edi
and edx, 2
or edi, 2
imul edi, edx
add edi, ebx
mov edx, eax
xor edx, 0xf0806895
mov ebx, edx
and ebx, edi
shl ebx, 1
xor edx, edi
add edx, ebx
mov edi, ecx
xor edi, 0x1b557016
xor ecx, 0x1b557016
and edi, ecx
mov ecx, edx
and ecx, 0x1b557016
or ecx, 0xa02a8968
and edx, 0xe4aa8fe9
xor edx, ecx
mov ebx, edx
xor ebx, 0x7e
mov ecx, edi
and ecx, ebx
xor edx, 0x7e
or edi, edx
xor ecx, edi
add cl, 0x58
mov byte [esp + eax + 0x38], cl
add eax, 1
jmp 0x4106f6
lea eax, [esp + 0x38]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 5
call fcn.00401f20
cmp eax, 0
mov ebx, dword [esp + 0x24]
je 0x4109d0
mov al, byte [esp + 0x1c0]
mov byte [esp + 0x260], al
mov byte [esp + 0xa4], 0x99
mov byte [esp + 0xa5], 0x14
mov eax, 2
mov byte [esp + eax + 0xa4], 0
add eax, 1
cmp eax, 3
jne 0x4107d6
xor eax, eax
cmp eax, 3
jae 0x41081a
mov dl, byte [esp + eax + 0xa4]
mov edi, eax
add edi, 0x4b
mov ecx, eax
add ecx, 0x4b
and ecx, 0xa1
and edi, 0x5e
or ecx, edi
xor cl, dl
add cl, 0xa8
mov byte [esp + eax + 0xa4], cl
add eax, 1
jmp 0x4107e8
lea eax, [esp + 0xa4]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401f20
cmp eax, 0
je 0x4109d0
mov al, byte [esp + 0x1bc]
mov byte [esp + 0x264], al
mov byte [esp + 0x36], 0x2d
mov byte [esp + 0x37], 0x4a
xor eax, eax
cmp eax, 2
jae 0x4108fe
movzx edi, byte [esp + eax + 0x36]
mov edx, eax
shl edx, 1
and edx, 0x1dd39682
mov ecx, eax
xor ecx, 0xee9cb41
add ecx, edx
mov edx, edi
shl edx, 1
xor edx, 0xffffffff
add edx, edi
and edx, 0x681d6eb
and edi, 0x14
or edx, edi
mov edi, ecx
xor edi, 0xf97e2914
mov ebx, ecx
xor ebx, 0xf97e2914
and edi, ebx
xor edi, 0xffffffff
mov ebx, edx
and ebx, edi
xor ecx, 0xf97e2914
xor edx, 0xffffffff
and ecx, edx
or ecx, ebx
mov edi, ecx
and edi, 0x88b1a5f7
xor edi, 0x88b1a5f7
mov ebx, edi
and ebx, 0xf5
mov edx, edi
and edx, 2
xor edx, 2
imul edx, ebx
mov ebx, edi
and ebx, 2
or edi, 2
imul edi, ebx
mov ebx, dword [esp + 0x24]
add edx, edi
xor ecx, 8
add ecx, 1
add edx, ecx
mov byte [esp + eax + 0x36], dl
add eax, 1
jmp 0x41085c
lea eax, [esp + 0x36]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401f20
cmp eax, 0
je 0x4109d0
mov al, byte [esp + 0x1b8]
mov byte [esp + 0x268], al
mov byte [esp + 0x10c], 0xed
mov byte [esp + 0x10d], 0x1f
mov byte [esp + 0x10e], 0x8d
mov eax, 3
mov byte [esp + eax + 0x10c], 0
add eax, 1
cmp eax, 6
jne 0x41094e
xor eax, eax
cmp eax, 6
jae 0x410995
movzx edx, byte [esp + eax + 0x10c]
mov ecx, eax
add ecx, 0xe2c3f213
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xce
xor ecx, 0x67
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x10c], cl
add eax, 1
jmp 0x410960
lea eax, [esp + 0x10c]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401f20
cmp eax, 0
setne al
or al, al
xor al, 0xff
xor al, 0xff
and al, 0xff
xor al, 0xff
and al, 0xff
test al, 1
jne 0x4127e1
jmp 0x4109d5
jmp 0x4127e1
mov al, byte [esp + 0x1b4]
mov byte [esp + 0x26c], al
mov byte [esp + 0x34], 0xc8
mov byte [esp + 0x35], 0x60
xor eax, eax
cmp eax, 2
jae 0x410a20
mov dl, byte [esp + eax + 0x34]
mov edi, eax
shl edi, 1
and edi, 0xae
mov ecx, eax
xor ecx, 0xd7
add ecx, edi
xor cl, dl
add cl, 0x48
mov byte [esp + eax + 0x34], cl
mov ecx, eax
shl ecx, 1
or eax, ecx
xor eax, 1
jmp 0x4109ef
lea eax, [esp + 0x34]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x30c], eax
mov al, byte [esp + 0x1b0]
mov byte [esp + 0x270], al
mov byte [esp + 0x32], 0xdb
mov byte [esp + 0x33], 0x4c
xor eax, eax
cmp eax, 2
jae 0x410ab4
movzx ecx, byte [esp + eax + 0x32]
mov edx, eax
and edx, 0xadfa14d1
mov ebx, eax
and ebx, 0xadfa14d1
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 ebx, eax
xor ebx, 0xadfa14d3
add ebx, edx
xor ebx, ecx
mov ecx, ebx
shl ecx, 1
and ecx, 0xce
xor ebx, 0x67
add ebx, ecx
add bl, 1
mov byte [esp + eax + 0x32], bl
mov ecx, eax
shl ecx, 1
or eax, ecx
xor eax, 1
jmp 0x410a55
lea eax, [esp + 0x32]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov edi, eax
mov al, byte [esp + 0x1ac]
mov byte [esp + 0x274], al
mov byte [esp + 0x30], 0xd4
mov byte [esp + 0x31], 0xaa
xor eax, eax
cmp eax, 2
jae 0x410b00
mov cl, byte [esp + eax + 0x30]
mov dl, al
add dl, 0xa1
xor dl, cl
add dl, 0xf8
mov byte [esp + eax + 0x30], dl
add eax, 1
jmp 0x410ae4
lea eax, [esp + 0x30]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401af0
mov cl, byte [esp + 0x1a8]
mov byte [esp + 0x278], cl
mov byte [esp + 0xa0], 0x14
mov byte [esp + 0xa1], 0x8f
mov ecx, 2
mov byte [esp + ecx + 0xa0], 0
add ecx, 1
cmp ecx, 4
jne 0x410b37
mov dword [esp + 0x3a0], edi
mov dword [esp + 0x328], eax
xor eax, eax
cmp eax, 4
jae 0x410bb2
mov cl, byte [esp + eax + 0xa0]
mov byte [esp + 0x4e], cl
movzx ebx, cl
mov ecx, eax
add ecx, 0xf2d3ee7e
mov edx, ebx
xor edx, 0xffffffff
mov edi, ecx
and edi, edx
mov edx, 0x81
sub edx, eax
and edx, ebx
or edx, edi
mov edi, 0xd2c1181
sub edi, eax
mov ebx, 0xd2c1181
sub ebx, eax
and ebx, edi
or edx, ebx
shl edx, 1
add edx, 2
add edx, ecx
add dl, byte [esp + 0x4e]
add dl, 0x10
mov byte [esp + eax + 0xa0], dl
add eax, 1
jmp 0x410b57
lea eax, [esp + 0xa0]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov cl, byte [esp + 0x1a4]
mov byte [esp + 0x27c], cl
mov byte [esp + 0x9c], 0xf
mov byte [esp + 0x9d], 0x6c
mov ecx, 2
mov byte [esp + ecx + 0x9c], 0
add ecx, 1
cmp ecx, 3
jne 0x410bec
mov dword [esp + 0x3a4], eax
xor edx, edx
cmp edx, 3
jae 0x410c9c
movzx eax, byte [esp + edx + 0x9c]
mov dword [esp + 0x34c], eax
mov ecx, edx
add ecx, 0x88f3aff3
mov edi, ecx
and edi, eax
shl edi, 1
mov ebx, ecx
sub ebx, edi
add ebx, eax
xor ebx, 0xffffffff
mov eax, edx
add eax, 0x88f3aff4
mov edi, 0x770c500c
sub edi, edx
or edi, ebx
add edi, eax
mov eax, edi
and eax, 2
xor eax, 2
mov ebx, edi
and ebx, 0xfffffffd
imul ebx, eax
mov eax, edi
and eax, 2
or edi, 2
imul edi, eax
add edi, ebx
sub ecx, edi
add ecx, dword [esp + 0x34c]
mov eax, ecx
and eax, 0x6753a5e3
xor eax, 0x6753a5e3
and ecx, 0x98ac5a1c
sub ecx, eax
mov eax, ecx
and eax, 1
or ecx, 1
add ecx, 0x4a
add ecx, eax
mov byte [esp + edx + 0x9c], cl
add edx, 1
jmp 0x410c05
lea eax, [esp + 0x9c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.004019c0
fnstcw word [esp + 0x7c]
movzx eax, word [esp + 0x7c]
or eax, 0xc00
mov word [esp + 0x2e0], ax
fldcw word [esp + 0x2e0]
fistp dword [esp + 0x3b8]
fldcw word [esp + 0x7c]
mov eax, dword [esp + 0x3b8]
mov dword [esp + 0x3a8], eax
mov al, byte [esp + 0x1a0]
mov byte [esp + 0x280], al
mov byte [esp + 0x106], 1
mov byte [esp + 0x107], 0xb
mov byte [esp + 0x108], 0x99
mov eax, 3
mov byte [esp + eax + 0x106], 0
add eax, 1
cmp eax, 5
jne 0x410d14
xor eax, eax
cmp eax, 5
jae 0x410d57
mov dl, byte [esp + eax + 0x106]
mov edi, eax
xor edi, 0xa1
mov ecx, eax
shl ecx, 1
and ecx, 0xbc
sub ecx, edi
xor cl, dl
add cl, 8
mov byte [esp + eax + 0x106], cl
add eax, 1
jmp 0x410d26
lea eax, [esp + 0x106]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.004019c0
fnstcw word [esp + 0x7a]
movzx eax, word [esp + 0x7a]
or eax, 0xc00
mov word [esp + 0x2de], ax
fldcw word [esp + 0x2de]
fistp dword [esp + 0x3b4]
fldcw word [esp + 0x7a]
mov eax, dword [esp + 0x3b4]
mov dword [esp + 0x39c], eax
mov eax, dword [esp + 0x30c]
mov dword [esp], eax
call fcn.004149f0
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410dd0
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
mov ebx, eax
xor eax, eax
mov dword [esp], ebx
mov dword [esp + 4], edi
mov eax, dword [esp + 0x30c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov dword [esp + 0x32c], 0
mov dword [esp + 0x330], 0
mov dword [esp + 0x334], 0
mov dword [esp + 0x338], 0
lea ecx, [esp + 0x32c]
mov dword [esp], ebx
call fcn.0043a050
sub esp, 4
mov dword [esp], ebx
call fcn.00408630
lea ecx, [esp + 0x32c]
mov dword [esp], 0x1000
call fcn.0043a2e0
sub esp, 4
cmp eax, 0
mov ebx, dword [esp + 0x24]
jge 0x410e65
jmp 0x411504
mov dword [esp + 0x19c], 0
mov eax, dword [esp + 0x32c]
mov dword [esp + 0x374], eax
mov al, byte [esp + 0x284]
mov byte [esp + 0x2dc], al
mov byte [esp + 0xe0], 0x19
mov byte [esp + 0xe1], 0x18
mov byte [esp + 0xe2], 0x17
mov byte [esp + 0xe3], 0x16
mov eax, 4
mov byte [esp + eax + 0xe0], 0
add eax, 1
cmp eax, 6
jne 0x410eb1
xor eax, eax
cmp eax, 6
jae 0x410efa
mov dl, byte [esp + eax + 0xe0]
mov edi, eax
shl edi, 1
and edi, 0x6c
mov ecx, eax
xor ecx, 0xb6
add ecx, edi
xor cl, dl
add cl, 0x50
mov byte [esp + eax + 0xe0], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x410ec3
mov eax, dword [esp + 0xe0]
mov dword [esp + 0x130], eax
xor edi, edi
mov ecx, 2
cmp edi, dword [0x44aea0]
jb 0x410f1c
jmp 0x410fac
mov edx, dword [0x44aea4]
cmp dword [edx + edi*8], 0x4947caf6
sete bl
xor ecx, ecx
mov byte [esp + 0x4f], bl
test bl, 1
jne 0x410f39
jmp 0x410f9b
mov ecx, dword [edx + edi*8 + 4]
cmp ecx, dword [esp + 0x130]
jne 0x410f4d
mov ecx, 2
jmp 0x410f9b
mov eax, dword [0x44aea8]
xor edx, edx
lea edx, [esp + 0x19c]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 0x14
mov eax, dword [esp + 0x374]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], edx
call fcn.0043b9a0
mov ecx, 1
test byte [esp + 0x4f], 1
je 0x410fa4
jmp 0x410fac
add edi, 1
jmp 0x410f0a
cmp ecx, 2
je 0x410fb8
mov dword [esp + 0x130], eax
mov al, byte [esp + 0x198]
mov byte [esp + 0x288], al
mov byte [esp + 0xd4], 0xf7
mov byte [esp + 0xd5], 0xf4
mov byte [esp + 0xd6], 0xf5
mov byte [esp + 0xd7], 0xb6
mov eax, 4
mov byte [esp + eax + 0xd4], 0
add eax, 1
cmp eax, 5
jne 0x410feb
xor eax, eax
cmp eax, 5
jae 0x411054
movzx edi, byte [esp + eax + 0xd4]
mov edx, eax
add edx, 0xc02850ab
mov ebx, 0x3fd7af54
sub ebx, eax
and ebx, 0x613d3627
and edx, 0x9ec2c9d8
mov ecx, edi
xor ecx, 0x613d3627
xor edi, 0x613d3627
and ecx, edi
or ebx, edx
xor ecx, ebx
mov edx, ecx
xor edx, 0x59
shl ecx, 1
and ecx, 0x4c
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0xd4], cl
add eax, 1
jmp 0x410ffd
mov eax, dword [esp + 0xd4]
cmp dword [esp + 0x130], eax
mov ebx, dword [esp + 0x24]
jne 0x411504
mov eax, dword [esp + 0x19c]
mov ecx, eax
and ecx, 2
or eax, 2
add ecx, eax
mov dword [esp], ecx
call fcn.0043a000
mov dword [esp + 0x138], eax
mov eax, dword [esp + 0x19c]
add eax, 2
mov dword [esp + 0x370], eax
mov eax, dword [esp + 0x32c]
mov dword [esp + 0x36c], eax
mov al, byte [esp + 0x28c]
mov byte [esp + 0x2d8], al
mov byte [esp + 0xe6], 0x19
mov byte [esp + 0xe7], 0x18
mov byte [esp + 0xe8], 0x17
mov byte [esp + 0xe9], 0x16
mov eax, 4
mov byte [esp + eax + 0xe6], 0
add eax, 1
cmp eax, 6
jne 0x4110de
xor eax, eax
cmp eax, 6
jae 0x411127
mov dl, byte [esp + eax + 0xe6]
mov edi, eax
shl edi, 1
and edi, 0x6c
mov ecx, eax
xor ecx, 0xb6
add ecx, edi
xor cl, dl
add cl, 0x50
mov byte [esp + eax + 0xe6], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x4110f0
mov edx, dword [esp + 0xe6]
xor edi, edi
mov ecx, 2
cmp edi, dword [0x44aea0]
jb 0x411142
jmp 0x4111e2
mov dword [esp + 0x128], edx
mov edx, dword [0x44aea4]
cmp dword [edx + edi*8], 0x4947caf6
sete bl
xor ecx, ecx
test bl, 1
jne 0x411162
jmp 0x4111c5
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, dword [esp + 0x128]
je 0x4111c5
mov eax, dword [0x44aea8]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esp + 0x36c]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esp + 0x138]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x370]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
call fcn.0043b9a0
mov ecx, 1
test bl, 1
je 0x4111d3
mov edx, dword [esp + 0x128]
jmp 0x4111e2
add edi, 1
mov edx, dword [esp + 0x128]
jmp 0x411130
cmp ecx, 2
je 0x4111e9
mov edx, eax
cmp edx, 0
jl 0x4114f1
mov dword [esp + 0x28], esi
mov edi, dword [esp + 0x3a0]
mov dword [esp], edi
call fcn.004149f0
mov ebx, eax
mov dword [esp + 0x360], ebx
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411229
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
xor ecx, ecx
mov dword [esp + 0x354], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov ecx, dword [esp + 0x138]
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 0x411282
movzx ecx, word [ebx]
cmp ecx, 0x5c
jne 0x41127d
jmp 0x411286
add ebx, 0xfffffffe
jmp 0x41126f
mov ebx, eax
jmp 0x411286
mov eax, dword [edi]
sub ebx, eax
sar ebx, 1
mov ecx, ebx
mov edx, dword [esp + 0x360]
and ecx, edx
shl ecx, 1
mov eax, ebx
xor eax, edx
add eax, ecx
add eax, 1
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4112b8
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
mov ecx, dword [edi]
mov esi, eax
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
call fcn.00414a60
mov dword [esp], eax
mov ebx, dword [esp + 0x354]
mov dword [esp + 4], ebx
call fcn.0040a1a0
mov edi, eax
mov dword [esp], ebx
call fcn.00408630
jmp 0x4112f3
add edi, 0x21c2add4
sub edi, esi
sub edi, 0x21c2add4
sar edi, 1
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41131e
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
mov dword [esp], esi
mov dword [esp + 0x2f8], eax
mov dword [esp + 4], eax
call fcn.004385a0
mov dword [esp], esi
call fcn.00408630
mov ebx, dword [esp + 0x3a4]
mov dword [esp], ebx
call fcn.004149f0
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41136d
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
xor ecx, ecx
mov dword [esp + 0x2e8], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040ada0
lea ecx, [esp + 0x4f8]
mov dword [esp], 1
call fcn.00409080
sub esp, 4
xor edi, edi
mov ebx, dword [esp + 0x328]
mov dword [esp], ebx
call fcn.00402040
cmp edi, eax
jb 0x4113c6
jmp 0x4114b5
mov dword [esp], ebx
mov dword [esp + 4], edi
call fcn.00402020
mov dword [esp], eax
call fcn.004019a0
mov ebx, eax
cmp ebx, 0
jne 0x4113e6
jmp 0x41149a
mov dword [esp], ebx
call fcn.004149f0
sub eax, 0xffffffff
mov ecx, 2
mov esi, eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411409
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
mov dword [esp + 0x124], eax
xor eax, eax
mov eax, dword [esp + 0x124]
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040ada0
lea eax, [esp + 0x4f8]
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x2e8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2f8]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x39c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3a8]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.00421020
mov eax, dword [esp + 0x124]
mov dword [esp], eax
call fcn.00408630
jmp 0x41149a
add edi, 0xdaa5f4aa
add edi, 1
sub edi, 0xdaa5f4aa
mov ebx, dword [esp + 0x328]
jmp 0x4113b5
mov eax, dword [esp + 0x2e8]
mov dword [esp], eax
call fcn.00408630
jmp 0x4114c6
mov eax, dword [esp + 0x2f8]
mov dword [esp], eax
call fcn.00408630
lea ecx, [esp + 0x4f8]
call fcn.00409c50
lea ecx, [esp + 0x4f8]
call fcn.00409160
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x138]
mov dword [esp], eax
call fcn.0043a020
mov ebx, dword [esp + 0x24]
lea ecx, [esp + 0x32c]
call fcn.0043a450
jmp 0x4127e1
mov al, byte [esp + 0x194]
mov byte [esp + 0x290], al
mov byte [esp + 0x98], 0x6b
mov byte [esp + 0x99], 0xe2
mov eax, 2
mov byte [esp + eax + 0x98], 0
add eax, 1
cmp eax, 4
jne 0x411538
xor eax, eax
cmp eax, 4
jae 0x411585
movzx edx, byte [esp + eax + 0x98]
mov ecx, eax
add ecx, 0x442238a9
xor ecx, edx
add ecx, 0xc85bee44
mov edx, ecx
xor edx, 0x8c
shl ecx, 1
and ecx, 0xe6
sub ecx, edx
mov byte [esp + eax + 0x98], cl
add eax, 1
jmp 0x41154a
lea eax, [esp + 0x98]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov edi, eax
mov al, byte [esp + 0x190]
mov byte [esp + 0x294], al
mov byte [esp + 0x2e], 0x4a
mov byte [esp + 0x2f], 0xdb
xor eax, eax
cmp eax, 2
jae 0x4115d4
mov cl, byte [esp + eax + 0x2e]
mov dl, al
add dl, 0x8a
xor dl, cl
add dl, 0xb0
mov byte [esp + eax + 0x2e], dl
add eax, 1
jmp 0x4115b8
lea eax, [esp + 0x2e]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.00401890
test edi, edi
sete dl
mov dword [esp + 0x384], eax
test eax, eax
sete cl
or dl, cl
test dl, 1
jne 0x411602
jmp 0x411607
jmp 0x411ffd
mov dword [esp], edi
call fcn.004149f0
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 0x411633
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
xor ecx, ecx
mov dword [esp + 0x324], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov al, byte [esp + 0x18c]
mov byte [esp + 0x298], al
mov byte [esp + 0x94], 0xd6
mov byte [esp + 0x95], 0xb1
mov eax, 2
mov byte [esp + eax + 0x94], 0
add eax, 1
cmp eax, 4
jne 0x41167f
xor eax, eax
cmp eax, 4
jae 0x4116b3
mov cl, byte [esp + eax + 0x94]
mov dl, al
add dl, 0x30
xor dl, cl
xor dl, 0x80
mov byte [esp + eax + 0x94], dl
add eax, 1
jmp 0x411691
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov edi, eax
mov dword [esp + 0x144], 0
cmp edi, 0
je 0x41172a
mov dword [esp], edi
call fcn.004149f0
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411701
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
xor ecx, ecx
mov dword [esp + 0x144], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x384]
mov dword [esp], esi
call fcn.004149f0
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41175a
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
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.0040ada0
xor eax, eax
lea eax, [esp + 0x188]
mov dword [esp], 0
mov dword [esp + 0x12c], ebx
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x44ae9c]
sub esp, 0x18
mov cl, byte [esp + 0x184]
mov byte [esp + 0x29c], cl
mov byte [esp + 0x68], 0x67
mov byte [esp + 0x69], 5
mov byte [esp + 0x6a], 6
mov byte [esp + 0x6b], 0xc7
xor esi, esi
cmp esi, 4
jae 0x41180a
mov bl, byte [esp + esi + 0x68]
mov ecx, esi
and ecx, 0xdc
xor ecx, 0xdc
mov edx, esi
and edx, 0x23
sub edx, ecx
xor dl, bl
add dl, 0xe0
mov byte [esp + esi + 0x68], dl
add esi, 1
jmp 0x4117de
mov ecx, dword [esp + 0x68]
cmp eax, ecx
mov ebx, dword [esp + 0x24]
je 0x411830
mov esi, dword [esp + 0x28]
jmp 0x41181c
mov eax, dword [esp + 0x12c]
mov dword [esp], eax
call fcn.00408630
jmp 0x411ffb
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x188]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411851
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
mov ecx, dword [0x44ae9c]
mov dword [esp + 0x340], ecx
mov ecx, dword [esp + 0x188]
xor edx, edx
mov dword [esp], 0
mov edx, dword [esp + 0x12c]
mov dword [esp + 4], edx
mov dword [esp + 8], edi
mov dword [esp + 0x140], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [esp + 0x188]
mov dword [esp + 0x14], eax
call dword [esp + 0x340]
sub esp, 0x18
cmp eax, 0
setge al
test al, 1
jne 0x4118dc
jmp 0x4118b5
jmp 0x4118b7
mov eax, dword [esp + 0x12c]
mov dword [esp], eax
call fcn.00408630
jmp 0x4118c8
mov eax, dword [esp + 0x140]
mov dword [esp], eax
call fcn.00408630
jmp 0x411ff9
mov al, byte [esp + 0x180]
mov byte [esp + 0x2a0], al
mov byte [esp + 0x90], 0x90
mov byte [esp + 0x91], 0x3f
mov eax, 2
mov byte [esp + eax + 0x90], 0
add eax, 1
cmp eax, 3
jne 0x4118ff
xor eax, eax
cmp eax, 3
jae 0x411963
movzx ecx, byte [esp + eax + 0x90]
mov edi, eax
add edi, 0x9bff2c4e
xor edi, ecx
mov ecx, edi
and ecx, 1
xor ecx, 1
mov edx, 0x70
sub edx, edi
mov esi, 0x70
sub esi, edi
or edx, esi
xor edx, 0xffffffff
or edx, 1
add ecx, edx
mov byte [esp + eax + 0x90], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
mov edx, eax
and edx, ecx
or eax, ecx
xor eax, 1
add eax, edx
jmp 0x411911
lea eax, [esp + 0x90]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov edi, eax
mov dword [esp + 0x13c], 0
cmp edi, 0
je 0x4119de
mov dword [esp], edi
call fcn.004149f0
mov ebx, eax
sub ebx, 0xffffffff
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4119b1
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
xor ecx, ecx
mov dword [esp + 0x13c], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov ebx, dword [esp + 0x24]
mov al, byte [esp + 0x17c]
mov byte [esp + 0x2a4], al
mov byte [esp + 0x8c], 0x83
mov byte [esp + 0x8d], 0x1c
mov eax, 2
mov byte [esp + eax + 0x8c], 0
add eax, 1
cmp eax, 3
jne 0x411a01
xor eax, eax
cmp eax, 3
jae 0x411a50
mov dl, byte [esp + eax + 0x8c]
movzx esi, dl
mov ecx, eax
add ecx, 0xb5262003
mov edi, ecx
and edi, esi
shl edi, 1
sub ecx, edi
add cl, dl
add cl, 0xe8
mov byte [esp + eax + 0x8c], cl
mov ecx, eax
shl ecx, 1
xor eax, 0x94bd3153
add eax, ecx
add eax, 0x6b42ceae
jmp 0x411a13
lea eax, [esp + 0x8c]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401c20
cmp eax, 0
setne al
and al, 1
mov byte [esp + 0x53], al
mov al, byte [esp + 0x178]
mov byte [esp + 0x2a8], al
mov byte [esp + 0x100], 0x5a
mov byte [esp + 0x101], pe_nt_image_headers32
mov byte [esp + 0x102], 0xf1
mov eax, 3
mov byte [esp + eax + 0x100], 0
add eax, 1
cmp eax, 5
jne 0x411a9e
xor eax, eax
mov esi, dword [esp + 0x28]
cmp eax, 5
jae 0x411aee
movzx edx, byte [esp + eax + 0x100]
mov esi, eax
add esi, 0x5e7200c7
mov ecx, esi
or ecx, edx
mov edi, eax
add edi, 0xc7
or edi, esi
mov esi, dword [esp + 0x28]
and edi, edx
sub ecx, edi
add cl, 0xc8
mov byte [esp + eax + 0x100], cl
add eax, 1
jmp 0x411ab4
lea eax, [esp + 0x100]
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401af0
xor ecx, ecx
mov dword [esp + 0x314], eax
cmp eax, 0
mov edi, 0
je 0x411ebf
mov eax, dword [esp + 0x314]
mov dword [esp], eax
call fcn.00402040
mov ecx, 0xc
mov dword [esp + 0x74], eax
mul ecx
seto dl
add eax, 4
setb cl
or dl, cl
mov ecx, 0xffffffff
test dl, 1
jne 0x411b4c
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
mov edi, eax
mov ecx, dword [esp + 0x74]
mov dword [edi], ecx
add edi, 4
cmp ecx, 0
sete al
test al, 1
mov dword [esp + 0x48], edi
jne 0x411b97
jmp 0x411b6f
imul eax, ecx, 0xc
mov ebx, edi
add ebx, eax
jmp 0x411b78
mov ecx, edi
call fcn.00414ad0
add edi, 0xc
cmp edi, ebx
sete al
test al, 1
mov ecx, dword [esp + 0x74]
jne 0x411b91
jmp 0x411b78
mov ebx, dword [esp + 0x24]
jmp 0x411b97
xor edi, edi
jmp 0x411b9b
cmp edi, ecx
jb 0x411ba8
mov edi, dword [esp + 0x48]
jmp 0x411ebf
mov eax, dword [esp + 0x314]
mov dword [esp], eax
mov dword [esp + 0x390], edi
mov dword [esp + 4], edi
call fcn.00402050
mov ebx, eax
mov al, byte [esp + 0x174]
mov byte [esp + 0x2ac], al
mov byte [esp + 0x64], 0x29
mov byte [esp + 0x65], 0x23
mov byte [esp + 0x66], 0x8e
mov eax, 3
mov byte [esp + eax + 0x64], 0
add eax, 1
cmp eax, 4
jne 0x411be6
xor eax, eax
mov edi, dword [esp + 0x48]
cmp eax, 4
jae 0x411c2c
movzx edx, byte [esp + eax + 0x64]
mov ecx, eax
add ecx, 0xfd5c02ec
xor ecx, edx
mov edx, ecx
and edx, 0xcd
xor edx, 0xcd
and ecx, 0x32
sub ecx, edx
add cl, 0x6d
mov byte [esp + eax + 0x64], cl
add eax, 1
jmp 0x411bf9
lea eax, [esp + 0x64]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x388], eax
mov al, byte [esp + 0x170]
mov byte [esp + 0x2b0], al
mov byte [esp + 0xfa], 0x1c
mov byte [esp + 0xfb], 0xf0
mov byte [esp + 0xfc], 0x7b
mov eax, 3
mov byte [esp + eax + 0xfa], 0
add eax, 1
cmp eax, 6
jne 0x411c6e
xor eax, eax
cmp eax, 6
jae 0x411ce0
mov cl, byte [esp + eax + 0xfa]
mov edx, eax
and edx, 0x6916010f
xor edx, 0x6916010f
mov edi, eax
and edi, 0x96e9fef0
sub edi, edx
mov esi, edi
add esi, 1
mov edx, edi
xor edx, 0xffffffff
or edx, 0x85
add edx, esi
and edi, 0x7a
xor edi, 0x7a
or edx, edi
mov edi, dword [esp + 0x48]
xor dl, cl
xor dl, 0x85
mov cl, 0x77
sub cl, dl
mov byte [esp + eax + 0xfa], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x411c80
lea eax, [esp + 0xfa]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x380], eax
mov al, byte [esp + 0x16c]
mov byte [esp + 0x2b4], al
mov byte [esp + 0xce], 0x7b
mov byte [esp + 0xcf], 0x7c
mov byte [esp + 0xd0], 0x7b
mov byte [esp + 0xd1], 0xda
mov eax, 4
mov byte [esp + eax + 0xce], 0
add eax, 1
cmp eax, 6
jne 0x411d2d
xor eax, eax
mov esi, dword [esp + 0x28]
cmp eax, 6
jae 0x411d85
movzx edx, byte [esp + eax + 0xce]
mov ecx, eax
add ecx, 0x1f
mov edi, 0xe0
sub edi, eax
mov esi, 0xe0
sub esi, eax
and edi, esi
mov esi, dword [esp + 0x28]
or ecx, edx
xor edx, 0xffffffff
or edi, edx
and ecx, edi
mov edi, dword [esp + 0x48]
add cl, 8
mov byte [esp + eax + 0xce], cl
add eax, 1
jmp 0x411d43
lea eax, [esp + 0xce]
mov dword [esp + 0x38c], ebx
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401c20
xor ebx, ebx
cmp eax, 0
setg byte [esp + 0x50]
mov al, byte [esp + 0x168]
mov byte [esp + 0x2b8], al
mov byte [esp + 0x60], 0xd1
mov byte [esp + 0x61], 0x26
mov byte [esp + 0x62], 0xd7
mov byte [esp + 0x63], 0x45
xor eax, eax
cmp eax, 4
jae 0x411e51
movzx edx, byte [esp + eax + 0x60]
mov ecx, 0x2d
sub ecx, eax
mov esi, 0x2d
sub esi, eax
mov edi, 0x2d
sub edi, eax
or esi, edi
and ecx, esi
mov edi, 0x24be4e2d
sub edi, eax
mov esi, edx
shl esi, 1
xor esi, 0xffffffff
add esi, edx
and edi, esi
mov esi, dword [esp + 0x28]
xor edx, 0xffffffff
or ecx, edx
mov edx, edi
shl edx, 1
xor edx, 0xffffffff
add edi, edx
and ecx, edi
mov edi, dword [esp + 0x48]
mov edx, ecx
shl edx, 1
and edx, 0xde
xor ecx, 0x90
sub edx, ecx
mov byte [esp + eax + 0x60], dl
mov ecx, eax
and ecx, 1
mov edx, eax
and edx, 2
xor edx, 2
and eax, 2
xor eax, 0xfffffffe
or edx, eax
xor edx, 0xffffffff
add ecx, edx
mov eax, ecx
jmp 0x411dcd
lea eax, [esp + 0x60]
mov ecx, dword [esp + 0x38c]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401c20
xor edx, edx
cmp eax, 0
setg dl
mov ecx, edi
mov edi, dword [esp + 0x390]
imul eax, edi, 0xc
add ecx, eax
mov eax, dword [esp + 0x388]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x380]
mov dword [esp], eax
and edx, 1
mov dword [esp + 0xc], edx
mov al, byte [esp + 0x50]
mov bl, al
and ebx, 1
mov dword [esp + 8], ebx
call fcn.00414af0
sub esp, 0x10
sub edi, 0xffffffff
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x74]
jmp 0x411b9b
mov dword [esp + 0x74], ecx
lea ecx, [esp + 0x3d4]
call fcn.00414c50
mov eax, dword [esp + 0x324]
mov dword [esp + 0x3d4], eax
mov eax, dword [esp + 0x144]
mov dword [esp + 0x3d8], eax
mov eax, dword [esp + 0x140]
mov dword [esp + 0x3dc], eax
mov eax, dword [esp + 0x13c]
mov dword [esp + 0x3e0], eax
mov al, byte [esp + 0x53]
mov byte [esp + 0x3e4], al
lea ecx, [esp + 0x470]
mov dword [esp], 2
call fcn.00409080
sub esp, 4
lea eax, [esp + 0x470]
lea ecx, [esp + 0x3d4]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edi
mov eax, dword [esp + 0x74]
mov dword [esp + 0xc], eax
call fcn.004153f0
lea ecx, [esp + 0x470]
call fcn.00409c50
cmp edi, 0
je 0x411fa1
mov ecx, edi
mov edi, ecx
add edi, 0xfffffffc
imul eax, dword [ecx - 4], 0xc
mov ebx, ecx
add ebx, eax
mov edx, ecx
cmp ecx, ebx
sete al
jmp 0x411f77
test al, 1
jne 0x411f95
jmp 0x411f7d
mov dword [esp + 0x48], edx
jmp 0x411f83
add ebx, 0xfffffff4
mov ecx, ebx
call fcn.00414c80
cmp ebx, dword [esp + 0x48]
jne 0x411f83
jmp 0x411f95
mov dword [esp], edi
call fcn.00408630
mov ebx, dword [esp + 0x24]
jmp 0x411fa3
mov eax, dword [esp + 0x324]
mov dword [esp], eax
call fcn.00408630
jmp 0x411fb4
jmp 0x411fb6
mov eax, dword [esp + 0x140]
mov dword [esp], eax
call fcn.00408630
mov eax, dword [esp + 0x144]
cmp eax, 0
je 0x411fd9
mov dword [esp], eax
call fcn.00408630
mov eax, dword [esp + 0x13c]
cmp eax, 0
je 0x411fed
mov dword [esp], eax
call fcn.00408630
lea ecx, [esp + 0x470]
call fcn.00409160
jmp 0x411ffb
jmp 0x411ffd
jmp 0x4127e1
mov al, byte [esp + 0x164]
mov byte [esp + 0x2bc], al
mov byte [esp + 0x2c], 2
mov byte [esp + 0x2d], 0xf9
xor eax, eax
cmp eax, 2
jae 0x41204b
mov dl, byte [esp + eax + 0x2c]
mov edi, esi
mov esi, eax
shl esi, 1
and esi, 0x70
mov ecx, eax
xor ecx, 0x38
add ecx, esi
mov esi, edi
xor cl, dl
add cl, 0x40
mov byte [esp + eax + 0x2c], cl
mov ecx, eax
shl ecx, 1
or eax, ecx
xor eax, 1
jmp 0x41201c
lea eax, [esp + 0x2c]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov edi, eax
mov al, byte [esp + 0x160]
mov byte [esp + 0x2c0], al
mov byte [esp + 0x88], 0xa1
mov byte [esp + 0x89], 0x52
mov eax, 2
mov byte [esp + eax + 0x88], 0
add eax, 1
cmp eax, 4
jne 0x412084
mov dword [esp + 0x28], esi
xor eax, eax
cmp eax, 4
jae 0x4120f5
mov dword [esp + 0x378], edi
movzx edi, byte [esp + eax + 0x88]
mov ecx, 0x66
sub ecx, eax
or ecx, edi
mov edx, 0x66
sub edx, eax
mov esi, 0x66
sub esi, eax
or edx, esi
and edx, edi
mov edi, dword [esp + 0x378]
xor ecx, 0xffffffff
or edx, ecx
add dl, 0x38
mov byte [esp + eax + 0x88], dl
mov ecx, eax
add ecx, 1
mov edx, eax
xor edx, 0xffffffff
or edx, 1
add edx, ecx
or eax, 1
add eax, edx
jmp 0x41209a
lea eax, [esp + 0x88]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.00401890
test edi, edi
sete dl
mov dword [esp + 0x2ec], eax
test eax, eax
sete cl
or dl, cl
test dl, 1
mov esi, dword [esp + 0x28]
jne 0x41212a
jmp 0x41212f
jmp 0x4127df
mov dword [esp], edi
call fcn.004149f0
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 0x41215b
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
xor ecx, ecx
mov dword [esp + 0x320], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ada0
mov eax, dword [esp + 0x2ec]
mov dword [esp], eax
call fcn.004149f0
mov ebx, eax
sub ebx, 0xffffffff
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4121b0
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x2ec]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ada0
xor eax, eax
lea eax, [esp + 0x15c]
mov dword [esp], 0
mov dword [esp + 0x134], edi
mov dword [esp + 4], edi
mov dword [esp + 0x37c], ebx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x44ae9c]
sub esp, 0x18
mov dword [esp + 0x364], eax
mov cl, byte [esp + 0x158]
mov byte [esp + 0x2c4], cl
mov byte [esp + 0xc8], 0x66
mov byte [esp + 0xc9], 0x86
mov byte [esp + 0xca], 0x87
mov byte [esp + 0xcb], 0xd8
mov ecx, 4
mov ebx, dword [esp + 0x24]
mov byte [esp + ecx + 0xc8], 0
add ecx, 1
cmp ecx, 5
jne 0x41225c
xor edi, edi
cmp edi, 5
jae 0x4122ec
movzx eax, byte [esp + edi + 0xc8]
mov edx, edi
and edx, 0x2400f2e3
xor edx, 0x2400f2e3
mov ecx, edi
and ecx, 0xdbff0d1c
sub ecx, edx
add ecx, 0xb0a449d0
mov edx, ecx
and edx, eax
mov esi, edx
and esi, 2
xor esi, 2
mov ebx, edx
and ebx, 0xfd
imul ebx, esi
mov esi, edx
and esi, 2
or edx, 2
imul edx, esi
add edx, ebx
mov ebx, dword [esp + 0x24]
add ecx, eax
mov eax, ecx
xor eax, 0xffffffff
mov esi, edx
and esi, eax
xor edx, 0xffffffff
and ecx, edx
sub ecx, esi
mov esi, dword [esp + 0x28]
add cl, 0x98
mov byte [esp + edi + 0xc8], cl
add edi, 0xa
and edi, 0x17
add edi, 0xffffffff
jmp 0x41226e
mov eax, dword [esp + 0xc8]
cmp dword [esp + 0x364], eax
je 0x412312
jmp 0x4122fe
mov eax, dword [esp + 0x134]
mov dword [esp], eax
call fcn.00408630
jmp 0x4127df
mov eax, dword [esp + 0x15c]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41232f
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
mov ecx, dword [0x44ae9c]
mov dword [esp + 0x344], ecx
mov ecx, dword [esp + 0x15c]
xor edx, edx
lea edx, [esp + 0x15c]
mov dword [esp], 0
mov edi, dword [esp + 0x134]
mov dword [esp + 4], edi
mov edi, dword [esp + 0x37c]
mov dword [esp + 8], edi
mov edi, eax
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call dword [esp + 0x344]
sub esp, 0x18
cmp eax, 0
jge 0x4123b0
jmp 0x412390
mov eax, dword [esp + 0x134]
mov dword [esp], eax
call fcn.00408630
jmp 0x4123a1
mov dword [esp], edi
call fcn.00408630
jmp 0x4123ab
jmp 0x4127dd
mov al, byte [esp + 0x154]
mov byte [esp + 0x2c8], al
mov byte [esp + 0x84], 0xce
mov byte [esp + 0x85], 0x67
mov eax, 2
mov byte [esp + eax + 0x84], 0
add eax, 1
cmp eax, 4
jne 0x4123d3
xor eax, eax
cmp eax, 4
jae 0x41241f
movzx edx, byte [esp + eax + 0x84]
mov esi, eax
add esi, 0xd6
mov ecx, edx
xor ecx, 0xffffffff
and esi, ecx
mov ecx, 0x29
sub ecx, eax
and ecx, edx
or ecx, esi
mov esi, dword [esp + 0x28]
add cl, 0x50
mov byte [esp + eax + 0x84], cl
add eax, 1
jmp 0x4123e5
lea eax, [esp + 0x84]
mov ecx, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401c20
cmp eax, 0
setne al
and al, 1
mov byte [esp + 0x52], al
mov al, byte [esp + 0x150]
mov byte [esp + 0x2cc], al
mov byte [esp + 0x5c], 0x96
mov byte [esp + 0x5d], 0x84
mov byte [esp + 0x5e], 0xd
mov eax, 3
mov byte [esp + eax + 0x5c], 0
add eax, 1
cmp eax, 4
jne 0x412464
xor eax, eax
cmp eax, 4
jae 0x41248f
mov cl, byte [esp + eax + 0x5c]
mov dl, al
add dl, 0x93
xor dl, cl
add dl, 0x68
mov byte [esp + eax + 0x5c], dl
add eax, 1
jmp 0x412473
lea eax, [esp + 0x5c]
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401af0
mov dword [esp + 0x308], eax
cmp eax, 0
setne cl
xor eax, eax
test cl, 1
mov ecx, 0
mov dword [esp + 0x31c], edi
jne 0x4124c7
jmp 0x4126db
mov eax, dword [esp + 0x308]
mov dword [esp], eax
call fcn.00402040
mov ecx, 8
mov dword [esp + 0x70], eax
mul ecx
seto dl
add eax, 4
setb ch
mov cl, dl
xor cl, 0xff
xor dl, 0xff
or cl, dl
mov dl, ch
xor dl, 0xff
xor ch, 0xff
or dl, ch
xor dl, 0xff
xor cl, 0xff
or dl, cl
mov ecx, 0xffffffff
test dl, 1
jne 0x412512
mov ecx, eax
mov dword [esp], ecx
call fcn.00408620
mov ecx, dword [esp + 0x70]
mov dword [eax], ecx
add eax, 4
cmp ecx, 0
mov dword [esp + 0x44], eax
je 0x412555
shl ecx, 3
mov ebx, eax
add ebx, ecx
jmp 0x412535
mov edi, eax
jmp 0x412539
mov ecx, edi
call fcn.00414cb0
add edi, 8
cmp edi, ebx
jne 0x412539
mov ebx, dword [esp + 0x24]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x70]
jmp 0x412555
xor edi, edi
jmp 0x412559
cmp edi, ecx
jb 0x412569
mov edi, dword [esp + 0x31c]
jmp 0x4126db
mov eax, dword [esp + 0x308]
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.00402050
mov dword [esp + 0x2fc], eax
mov al, byte [esp + 0x14c]
mov byte [esp + 0x2d0], al
mov byte [esp + 0xf4], 0x8c
mov byte [esp + 0xf5], 0x94
mov byte [esp + 0xf6], 0xeb
mov eax, 3
mov byte [esp + eax + 0xf4], 0
add eax, 1
cmp eax, 6
jne 0x4125ae
xor eax, eax
cmp eax, 6
jae 0x41260a
movzx esi, byte [esp + eax + 0xf4]
mov edx, eax
add edx, 0xcb18aee1
mov ecx, edx
or ecx, esi
mov ebx, esi
add ebx, 1
xor esi, 0xffffffff
or edx, esi
add edx, ebx
mov esi, ecx
xor esi, edx
xor edx, 0xffffffff
and ecx, edx
shl ecx, 1
sub ecx, esi
add cl, 0xf8
mov byte [esp + eax + 0xf4], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x4125c0
lea eax, [esp + 0xf4]
mov ecx, dword [esp + 0x2fc]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x358], eax
mov al, byte [esp + 0x148]
mov byte [esp + 0x2d4], al
mov byte [esp + 0x58], 0x1b
mov byte [esp + 0x59], 0x25
mov byte [esp + 0x5a], 0xa0
mov eax, 3
mov byte [esp + eax + 0x58], 0
add eax, 1
cmp eax, 4
jne 0x41264d
xor eax, eax
mov ebx, dword [esp + 0x24]
cmp eax, 4
jae 0x41268f
movzx edx, byte [esp + eax + 0x58]
mov ecx, eax
add ecx, 0xce
and ecx, edx
xor edx, 0xffffffff
mov esi, 0x31
sub esi, eax
and esi, edx
or ecx, esi
mov dl, 0x8f
sub dl, cl
mov byte [esp + eax + 0x58], dl
add eax, 1
jmp 0x412660
lea eax, [esp + 0x58]
mov ecx, dword [esp + 0x2fc]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov edx, edi
shl edx, 3
mov ecx, dword [esp + 0x44]
add ecx, edx
mov dword [esp], eax
mov eax, dword [esp + 0x358]
mov dword [esp + 4], eax
call fcn.00414cc0
sub esp, 8
add edi, 1
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x70]
jmp 0x412559
mov dword [esp + 0x70], ecx
mov dword [esp + 0x44], eax
lea ecx, [esp + 0x3c0]
call fcn.00414c50
mov eax, dword [esp + 0x320]
mov dword [esp + 0x3c0], eax
mov dword [esp + 0x3c4], 0
mov dword [esp + 0x3c8], edi
mov dword [esp + 0x3cc], 0
mov al, byte [esp + 0x52]
mov byte [esp + 0x3d0], al
lea ecx, [esp + 0x3e8]
mov dword [esp], 3
call fcn.00409080
sub esp, 4
lea eax, [esp + 0x3e8]
lea ecx, [esp + 0x3c0]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov eax, dword [esp + 0x44]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0xc], eax
call fcn.0041f300
lea ecx, [esp + 0x3e8]
call fcn.00409c50
mov ecx, dword [esp + 0x44]
cmp ecx, 0
je 0x4127b4
mov edi, ecx
add edi, 0xfffffffc
mov eax, dword [ecx - 4]
shl eax, 3
mov ebx, ecx
add ebx, eax
cmp ecx, ebx
je 0x4127a1
jmp 0x41278f
add ebx, 0xfffffff8
mov ecx, ebx
call fcn.00414d80
cmp ebx, dword [esp + 0x44]
jne 0x41278f
jmp 0x4127a1
mov dword [esp], edi
call fcn.00408630
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x31c]
jmp 0x4127b6
mov dword [esp], edi
call fcn.00408630
jmp 0x4127c0
mov eax, dword [esp + 0x320]
mov dword [esp], eax
call fcn.00408630
jmp 0x4127d1
lea ecx, [esp + 0x3e8]
call fcn.00409160
jmp 0x4127df
jmp 0x4127e1
jmp 0x4127e3
add ebx, 1
jmp 0x40f864
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret