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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x248
mov esi, esp
mov edi, dword [ebp + 8]
call fcn.004150f0
push eax
mov ebx, esp
push eax
mov dword [esi + 0x230], esp
push eax
mov dword [esi + 0xb0], esp
push eax
mov dword [esi + 0x22c], esp
push eax
mov dword [esi + 0x60], esp
push eax
mov dword [esi + 0x228], esp
push eax
mov dword [esi + 0xac], esp
push eax
mov dword [esi + 0x224], esp
push eax
mov dword [esi + 0xa8], esp
push eax
mov dword [esi + 0x16c], esp
push eax
mov dword [esi + 0xa4], esp
push eax
mov dword [esi + 0xa0], esp
sub esp, 0x400
mov dword [esi + 0x220], esp
push eax
mov dword [esi + 0xc], esp
push eax
mov dword [esi + 0x9c], esp
push eax
mov dword [esi + 0x98], esp
push eax
mov dword [esi + 0x21c], esp
push eax
mov dword [esi + 0x94], esp
push eax
mov dword [esi + 0x5c], esp
push eax
mov dword [esi + 0x218], esp
sub esp, 0x40
mov dword [esi + 0x168], esp
push eax
mov dword [esi + 0x90], esp
push eax
mov dword [esi + 0x214], esp
sub esp, 0x60
mov dword [esi + 0x164], esp
sub esp, 0x10
mov dword [esi + 0x8c], esp
push eax
mov dword [esi + 0x210], esp
push eax
mov dword [esi + 0x88], esp
push eax
mov dword [esi + 0x58], esp
push eax
mov dword [esi + 0x20c], esp
push eax
mov dword [esi + 0x54], esp
push eax
mov dword [esi + 0x208], esp
sub esp, 0xc
mov dword [esi + 0x50], esp
push eax
mov dword [esi + 0x204], esp
sub esp, 0xc
mov dword [esi + 0x84], esp
push eax
mov dword [esi + 0x200], esp
sub esp, 0xc
mov dword [esi + 0x4c], esp
push eax
mov dword [esi + 0x1fc], esp
push eax
mov dword [esi + 0x160], esp
push eax
mov dword [esi + 0x48], esp
push eax
mov dword [esi + 0x1f8], esp
push eax
mov dword [esi + 0x80], esp
push eax
mov dword [esi + 0x1f4], esp
sub esp, 0x14
mov dword [esi + 0x7c], esp
push eax
mov dword [esi + 0x1f0], esp
push eax
mov dword [esi + 0x78], esp
push eax
mov dword [esi + 0x1ec], esp
sub esp, 0x3c
mov dword [esi + 0x74], esp
push eax
mov dword [esi + 0x1e8], esp
sub esp, 0x34
mov dword [esi + 0x44], esp
push eax
mov dword [esi + 0x1e4], esp
sub esp, 0x44
mov dword [esi + 0x15c], esp
sub esp, 0x10
mov dword [esi + 0x158], esp
sub esp, 8
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x154], eax
mov esp, eax
push eax
push eax
mov dword [esi + 0x70], esp
push eax
mov dword [esi + 0x1e0], esp
sub esp, 0x44
mov dword [esi + 0x1dc], esp
sub esp, 0x10
mov dword [esi + 0x6c], esp
sub esp, 4
mov dword [esp], edi
call fcn.00402770
add esp, 4
mov edi, eax
cmp edi, 0
sete al
test al, 1
jne 0x412f1f
jmp 0x412f26
xor eax, eax
jmp 0x414cbe
mov dword [esi + 0x234], ebx
xor ebx, ebx
mov dword [esi], edi
jmp 0x412f32
sub esp, 4
mov dword [esp], edi
call fcn.00402b40
add esp, 4
cmp ebx, eax
jb 0x412f4b
mov al, 1
jmp 0x414cbe
sub esp, 8
mov dword [esp], edi
mov dword [esi + 0x20], ebx
mov dword [esp + 4], ebx
call fcn.00402b50
add esp, 8
mov dword [esi + 0x10], eax
mov eax, dword [esi + 0x230]
mov al, byte [eax]
mov byte [esi + 0xc8], al
mov ebx, dword [esi + 0x234]
mov byte [ebx], 0x94
mov byte [ebx + 1], 0x62
xor eax, eax
cmp eax, 2
jae 0x412f9a
mov cl, byte [ebx + eax]
mov dl, al
add dl, 0x29
xor dl, cl
add dl, 0xb8
mov byte [ebx + eax], dl
add eax, 1
jmp 0x412f80
sub esp, 0xc
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], 2
call fcn.00402a40
add esp, 0xc
cmp eax, 0
setne al
test al, 1
jne 0x412fc6
jmp 0x4130e8
mov eax, dword [esi + 0x22c]
mov al, byte [eax]
mov byte [esi + 0xcc], al
mov eax, dword [esi + 0xb0]
mov byte [eax], 0xd
mov byte [eax + 1], 0xf8
mov byte [eax + 2], 0x6d
xor eax, eax
cmp eax, 3
jae 0x413023
mov edi, dword [esi + 0xb0]
movzx edx, byte [edi + eax]
mov ecx, eax
add ecx, 0xf88fb3f3
xor ecx, edx
add ecx, 0x3b826067
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, 0xef
or ecx, edx
add cl, 0x11
mov byte [edi + eax], cl
mov edi, dword [esi]
add eax, 1
jmp 0x412fe7
sub esp, 0xc
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov eax, dword [esi + 0xb0]
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00402a40
add esp, 0xc
cmp eax, 0
je 0x4130e8
mov eax, dword [esi + 0x228]
mov al, byte [eax]
mov byte [esi + 0xd0], al
mov eax, dword [esi + 0x60]
mov byte [eax], 0xcd
mov byte [eax + 1], 0x29
xor eax, eax
cmp eax, 2
jae 0x4130bb
mov ecx, dword [esi + 0x60]
movzx ebx, byte [ecx + eax]
mov ecx, 0x97
sub ecx, eax
mov edx, 0x97
sub edx, eax
and edx, ecx
mov ecx, 0xcc018197
sub ecx, eax
mov edi, ebx
xor edi, 0xffffffff
and ecx, edi
xor ebx, 0xffffffff
or edx, ebx
mov edi, ecx
shl edi, 1
xor edi, 0xffffffff
add ecx, edi
mov edi, edx
add edi, 1
xor edx, 0xffffffff
or ecx, edx
add ecx, edi
add cl, 0xc0
mov edx, dword [esi + 0x60]
mov byte [edx + eax], cl
add eax, 1
jmp 0x413069
sub esp, 0xc
mov eax, dword [esi + 0x60]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov dword [esp + 8], 3
call fcn.00402a40
add esp, 0xc
test eax, eax
sete al
test al, 1
mov edi, dword [esi]
jne 0x4130e8
jmp 0x4130f0
mov eax, dword [esi + 0x20]
jmp 0x414cb4
mov eax, dword [esi + 0x224]
mov al, byte [eax]
mov byte [esi + 0xd4], al
mov eax, dword [esi + 0xac]
mov byte [eax], 0xcf
mov byte [eax + 1], 0x5b
xor eax, eax
mov edi, dword [esi + 0x16c]
mov ebx, dword [esi + 0xa0]
cmp eax, 2
jae 0x413151
mov ebx, dword [esi + 0xac]
movzx edx, byte [ebx + eax]
mov ecx, eax
add ecx, 0x92caa00a
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
add cl, 0xb0
mov byte [ebx + eax], cl
mov ebx, dword [esi + 0xa0]
mov edi, dword [esi + 0x16c]
add eax, 1
jmp 0x413119
sub esp, 8
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov eax, dword [esi + 0xac]
mov dword [esp + 4], eax
call fcn.00402480
add esp, 8
mov dword [esi + 0x1d0], eax
mov al, byte [edi]
mov byte [esi + 0xd8], al
mov eax, dword [esi + 0xa8]
mov byte [eax], 0x56
mov byte [eax + 1], 0x45
mov byte [eax + 2], 0x32
xor eax, eax
cmp eax, 3
jae 0x4131d2
mov ebx, dword [esi + 0xa8]
movzx edx, byte [ebx + eax]
mov edi, eax
xor edi, 0x11327f50
mov ecx, eax
shl ecx, 1
and ecx, 0xdd9b015e
sub ecx, edi
xor ecx, edx
add ecx, 0x8993fa7f
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [ebx + eax], cl
mov ebx, dword [esi + 0xa0]
add eax, 1
jmp 0x41318d
sub esp, 8
mov eax, dword [esi + 0xa8]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x10]
mov dword [esp], eax
call fcn.00402580
add esp, 8
fnstcw word [esi + 0x3e]
movzx eax, word [esi + 0x3e]
or eax, 0xc00
mov word [esi + 0x13e], ax
fldcw word [esi + 0x13e]
fistp dword [esi + 0x23c]
fldcw word [esi + 0x3e]
mov eax, dword [esi + 0x23c]
mov dword [esi + 0x14], eax
mov al, byte [ebx]
mov byte [esi + 0xdc], al
mov eax, dword [esi + 0xa4]
mov byte [eax], 0x73
mov byte [eax + 1], 0xd7
xor eax, eax
cmp eax, 2
jae 0x413267
mov ebx, dword [esi + 0xa4]
mov dl, byte [ebx + eax]
mov edi, eax
add edi, 0xe6
mov ecx, 0x19
sub ecx, eax
and ecx, 0x30
and edi, 0xcf
or ecx, edi
xor cl, dl
xor cl, 0x30
add cl, 0xd0
mov byte [ebx + eax], cl
add eax, 1
jmp 0x41322f
sub esp, 8
mov eax, dword [esi + 0xa4]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x10]
mov dword [esp], eax
call fcn.00402580
add esp, 8
fnstcw word [esi + 0x3c]
movzx eax, word [esi + 0x3c]
or eax, 0xc00
mov word [esi + 0x13c], ax
fldcw word [esi + 0x13c]
fistp dword [esi + 0x238]
fldcw word [esi + 0x3c]
mov edi, dword [esi + 0x238]
xor eax, eax
sub esp, 0x10
mov ebx, dword [esi + 0x220]
mov dword [esp], ebx
mov dword [esp + 4], 0x400
mov eax, dword [esi + 0x1d0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b3f0
add esp, 0x10
xor eax, eax
sub esp, 0x10
mov dword [esp], ebx
mov eax, dword [esi + 0xc]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x9c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040bb90
add esp, 0x10
test al, 1
jne 0x413311
mov edi, dword [esi]
mov eax, dword [esi + 0x20]
jmp 0x414cb4
cmp edi, 0
sete al
mov byte [esi + 0x1f], al
test al, 1
jne 0x413323
jmp 0x414317
mov eax, dword [esi + 0x21c]
mov al, byte [eax]
mov byte [esi + 0xe0], al
mov eax, dword [esi + 0x98]
mov byte [eax], 0xd6
mov byte [eax + 1], 0x47
xor eax, eax
cmp eax, 2
jae 0x413379
mov edi, dword [esi + 0x98]
movzx edx, byte [edi + eax]
mov ecx, eax
add ecx, 0xaaaf68f6
xor ecx, edx
add ecx, 0xaa84b84f
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [edi + eax], cl
mov ecx, eax
shl ecx, 1
or eax, ecx
xor eax, 1
jmp 0x413340
sub esp, 8
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov eax, dword [esi + 0x98]
mov dword [esp + 4], eax
call fcn.00402480
add esp, 8
cmp eax, 0
setne cl
test cl, 1
jne 0x4133a4
jmp 0x4135db
sub esp, 4
mov dword [esi + 0x180], eax
mov dword [esp], eax
call fcn.00414cd0
add esp, 4
mov dword [esi + 0x148], eax
sub eax, 0xffffffff
mov ecx, 2
mov ebx, eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4133d9
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408bc0
add esp, 4
mov edi, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], edi
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x180]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b3f0
add esp, 0x10
xor eax, eax
sub esp, 0x18
mov dword [esp], 0
mov dword [esi + 0x40], edi
mov dword [esp + 4], edi
mov eax, dword [esi + 0x148]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0x94]
mov dword [esp + 0x14], eax
call dword [0x449554]
mov dword [esi + 0x190], eax
mov eax, dword [esi + 0x218]
mov al, byte [eax]
mov byte [esi + 0xe4], al
mov eax, dword [esi + 0x5c]
mov byte [eax], 0x51
mov byte [eax + 1], 0x73
mov byte [eax + 2], 0x74
mov byte [eax + 3], 0xb5
xor edi, edi
cmp edi, 4
jae 0x4134ae
mov eax, dword [esi + 0x5c]
movzx eax, byte [eax + edi]
mov edx, 0x9d
sub edx, edi
or edx, eax
mov ecx, 0x9d
sub ecx, edi
mov ebx, 0x9d
sub ebx, edi
or ecx, ebx
and ecx, eax
xor edx, 0xffffffff
or ecx, edx
add cl, 0xf0
mov eax, dword [esi + 0x5c]
mov byte [eax + edi], cl
add edi, 1
jmp 0x413474
mov eax, dword [esi + 0x5c]
mov eax, dword [eax]
cmp dword [esi + 0x190], eax
jne 0x4134f1
mov edi, dword [esi]
jmp 0x4134bf
sub esp, 4
mov eax, dword [esi + 0x40]
mov dword [esp], eax
call fcn.00408bd0
add esp, 4
jmp 0x4134d2
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call fcn.00439e40
add esp, 4
xor edx, edx
mov eax, 4
jmp 0x4135cd
mov eax, dword [esi + 0x94]
mov eax, dword [eax]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41350f
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408bc0
add esp, 4
mov ecx, dword [0x449554]
mov dword [esi + 0x17c], ecx
mov edi, dword [esi + 0x94]
mov ecx, dword [edi]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov edx, dword [esi + 0x40]
mov dword [esp + 4], edx
mov edx, dword [esi + 0x148]
mov dword [esp + 8], edx
mov ebx, eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edi
call dword [esi + 0x17c]
cmp eax, 0
jge 0x4135ae
jmp 0x413569
mov edi, dword [esi]
mov eax, ebx
sub esp, 4
mov dword [esp], eax
call fcn.00408bd0
add esp, 4
jmp 0x41357d
jmp 0x41357f
sub esp, 4
mov eax, dword [esi + 0x40]
mov dword [esp], eax
call fcn.00408bd0
add esp, 4
jmp 0x413592
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call fcn.00439e40
add esp, 4
mov eax, 4
mov edx, ebx
jmp 0x4135cd
mov edi, dword [esi]
jmp 0x4135b2
sub esp, 4
mov eax, dword [esi + 0x40]
mov dword [esp], eax
call fcn.00408bd0
add esp, 4
mov edx, ebx
jmp 0x4135c7
jmp 0x4135c9
xor eax, eax
jmp 0x4135cd
cmp eax, 0
je 0x413b8f
jmp 0x413b91
call fcn.004092b0
and eax, 0xf
xor ecx, ecx
sub ecx, eax
add ecx, 0xfffffff0
xor edx, edx
sub edx, ecx
xor edi, edi
mov ecx, dword [esi + 0x168]
cmp edi, edx
setb al
test al, 1
jne 0x4137c5
jmp 0x413608
mov word [ecx], 0
mov eax, dword [esi + 0x210]
mov al, byte [eax]
mov byte [esi + 0xec], al
mov eax, dword [esi + 0x8c]
mov byte [eax], 0xe6
mov byte [eax + 1], 0xc4
mov byte [eax + 2], 0x31
mov byte [eax + 3], 0xc6
mov byte [eax + 4], 2
mov byte [eax + 5], 0xf8
mov byte [eax + 6], 4
mov byte [eax + 7], 0xfa
mov byte [eax + 8], 0xb
mov byte [eax + 9], 0xfc
mov byte [eax + 0xa], 0xd8
mov byte [eax + 0xb], 0xfe
mov byte [eax + 0xc], 0x13
mov byte [eax + 0xd], 0xf0
mov byte [eax + 0xe], 0xf1
mov byte [eax + 0xf], 0xf2
xor eax, eax
cmp eax, 0x10
jae 0x413691
mov ebx, dword [esi + 0x8c]
movzx edi, byte [ebx + eax]
mov edx, eax
add edx, 0x1b
mov ecx, 0xe4
sub ecx, eax
and ecx, edi
xor edi, 0xffffffff
and edx, edi
or ecx, edx
add cl, 0x28
mov byte [ebx + eax], cl
add eax, 1
jmp 0x413662
sub esp, 8
mov edi, dword [esi + 0x164]
mov dword [esp], edi
mov eax, dword [esi + 0x8c]
mov dword [esp + 4], eax
call fcn.0040a800
mov dword [esp], eax
mov eax, dword [esi + 0x168]
mov dword [esp + 4], eax
call fcn.0040a800
add esp, 8
mov edx, eax
xor edx, 0xffffffff
and edx, edi
mov ecx, edi
xor ecx, 0xffffffff
and eax, ecx
sub eax, edx
sar eax, 1
xor ecx, ecx
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], edi
mov dword [esi + 0x1d4], eax
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0x88]
mov dword [esp + 0x14], eax
call dword [0x449554]
mov dword [esi + 0x1b4], eax
mov eax, dword [esi + 0x20c]
mov al, byte [eax]
mov byte [esi + 0xf0], al
mov eax, dword [esi + 0x58]
mov byte [eax], 0xd
mov byte [eax + 1], 0xef
mov byte [eax + 2], 0xd0
mov byte [eax + 3], 0x91
xor ecx, ecx
cmp ecx, 4
jae 0x4137a6
mov eax, dword [esi + 0x58]
movzx edi, byte [eax + ecx]
mov dword [esi + 0x184], edi
mov edx, ecx
add edx, 0xf5074e1e
mov eax, 0xaf8b1e1
sub eax, ecx
or eax, edi
mov ebx, 0xe1
sub ebx, ecx
and ebx, edi
xor ebx, eax
mov edi, edx
and edi, ebx
mov ebx, edi
and ebx, 2
xor ebx, 2
mov eax, edi
and eax, 0xfffffffd
imul eax, ebx
mov ebx, edi
and ebx, 2
or edi, 2
imul edi, ebx
add edi, eax
sub edx, edi
add edx, dword [esi + 0x184]
mov eax, edx
shl eax, 1
and eax, 0x1e
xor edx, 0xf
add edx, eax
add dl, 1
mov eax, dword [esi + 0x58]
mov byte [eax + ecx], dl
add ecx, 1
jmp 0x413735
mov eax, dword [esi + 0x58]
mov ecx, dword [esi + 0x1b4]
cmp ecx, dword [eax]
setne al
mov edi, dword [esi]
jmp 0x4137b8
test al, 1
jne 0x413877
jmp 0x413896
mov dword [esi + 0x1b0], ecx
mov dword [esi + 0x1bc], edx
call fcn.004092b0
mov dword [esi + 0x18c], eax
mov eax, dword [esi + 0x214]
mov cl, byte [eax]
mov byte [esi + 0xe8], cl
mov eax, dword [esi + 0x90]
mov byte [eax], 0x2a
mov byte [eax + 1], 0xcf
mov byte [eax + 2], 0xb0
mov byte [eax + 3], 0xb1
xor ecx, ecx
cmp ecx, 4
jae 0x413839
mov eax, dword [esi + 0x90]
mov dword [esi + 0x1b8], edi
movzx edi, byte [eax + ecx]
mov edx, ecx
add edx, 0x219d23e
mov ebx, edx
xor ebx, edi
xor edx, edi
mov edi, dword [esi + 0x1b8]
shl edx, 1
sub edx, ebx
add dl, 0x10
mov byte [eax + ecx], dl
add ecx, 1
jmp 0x413801
mov eax, dword [esi + 0x18c]
cdq
mov ecx, dword [esi + 0x90]
idiv dword [ecx]
movsx ecx, byte [edx + 0x440b8c]
mov edx, dword [esi + 0x1b0]
mov eax, edx
add eax, 2
mov word [edx], cx
mov ecx, edi
and ecx, 1
shl ecx, 1
xor edi, 1
add edi, ecx
mov ecx, eax
mov edx, dword [esi + 0x1bc]
jmp 0x4135f9
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call fcn.00439e40
add esp, 4
xor edx, edx
mov eax, 4
jmp 0x413b82
mov eax, dword [esi + 0x88]
mov edi, dword [eax]
mov eax, dword [esi + 0x208]
mov al, byte [eax]
mov byte [esi + 0xf4], al
mov eax, dword [esi + 0x54]
mov byte [eax], 0xca
mov byte [eax + 1], 0xcf
mov byte [eax + 2], 0xb0
mov byte [eax + 3], 0xb1
xor ecx, ecx
cmp ecx, 4
jae 0x4138fe
mov eax, dword [esi + 0x54]
movzx eax, byte [eax + ecx]
mov edx, 0x180253c1
sub edx, ecx
or edx, eax
mov ebx, 0xc1
sub ebx, ecx
and ebx, eax
mov eax, ebx
xor eax, edx
xor ebx, edx
or eax, ebx
mov dl, 0xf
sub dl, al
mov eax, dword [esi + 0x54]
mov byte [eax + ecx], dl
mov eax, ecx
shl eax, 1
and eax, 2
xor ecx, 1
add ecx, eax
jmp 0x4138c0
mov eax, dword [esi + 0x54]
mov eax, dword [eax]
mov ecx, edi
and ecx, eax
shl ecx, 1
xor edi, eax
add edi, ecx
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x413925
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408bc0
add esp, 4
mov ebx, dword [0x449554]
mov edi, dword [esi + 0x88]
mov ecx, dword [edi]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov edx, dword [esi + 0x164]
mov dword [esp + 4], edx
mov edx, dword [esi + 0x1d4]
mov dword [esp + 8], edx
mov dword [esi + 4], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edi
call ebx
cmp eax, 0
jge 0x4139ae
mov edi, dword [esi]
jmp 0x41397b
mov eax, dword [esi + 4]
sub esp, 4
mov dword [esp], eax
call fcn.00408bd0
add esp, 4
jmp 0x41398e
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call fcn.00439e40
add esp, 4
mov eax, 4
mov edx, dword [esi + 4]
jmp 0x413b82
cmp dword [esi + 0x14], 0
sete al
mov edi, dword [esi]
test al, 1
mov edx, dword [esi + 4]
jne 0x4139c3
jmp 0x413a48
mov eax, dword [esi + 0x204]
mov al, byte [eax]
mov byte [esi + 0xf8], al
mov eax, dword [esi + 0x50]
mov byte [eax], 0x11
mov byte [eax + 1], 0x40
mov byte [eax + 2], 0xe4
mov byte [eax + 3], 0x42
mov byte [eax + 4], 0xcb
mov byte [eax + 5], 0x44
mov byte [eax + 6], 0xe0
mov byte [eax + 7], 0x46
mov byte [eax + 8], 0x47
mov byte [eax + 9], 0xb8
xor eax, eax
cmp eax, 0xa
jae 0x413a2c
mov ecx, dword [esi + 0x50]
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0xf85cf7
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
mov edx, dword [esi + 4]
sub ecx, edi
add cl, 0x48
mov edi, dword [esi + 0x50]
mov byte [edi + eax], cl
add eax, 1
jmp 0x4139fd
sub esp, 8
mov dword [esp], edx
mov eax, dword [esi + 0x50]
mov dword [esp + 4], eax
call fcn.00415070
add esp, 8
mov edi, dword [esi]
jmp 0x413b7b
mov eax, dword [esi + 0x14]
cmp eax, 1
jne 0x413adf
mov eax, dword [esi + 0x200]
mov al, byte [eax]
mov byte [esi + 0xfc], al
mov eax, dword [esi + 0x84]
mov byte [eax], 0x6f
mov byte [eax + 1], 0x52
mov byte [eax + 2], 0xb7
mov byte [eax + 3], 0x54
mov byte [eax + 4], 0xa9
mov byte [eax + 5], 0x56
mov byte [eax + 6], 0xab
mov byte [eax + 7], 0x68
mov byte [eax + 8], 0x69
mov byte [eax + 9], 0x6a
xor eax, eax
cmp eax, 0xa
jae 0x413ac0
mov edi, dword [esi + 0x84]
mov cl, byte [edi + eax]
mov dl, al
add dl, 0x99
xor dl, cl
add dl, 0x38
mov byte [edi + eax], dl
mov edx, dword [esi + 4]
mov ecx, eax
shl ecx, 1
and ecx, 2
or ecx, 0x40
xor eax, 0xffffffc1
add eax, ecx
jmp 0x413a91
sub esp, 8
mov dword [esp], edx
mov eax, dword [esi + 0x84]
mov dword [esp + 4], eax
call fcn.00415070
add esp, 8
mov edi, dword [esi]
jmp 0x413b7b
cmp eax, 2
jne 0x413b7b
mov eax, dword [esi + 0x1fc]
mov al, byte [eax]
mov byte [esi + 0x100], al
mov eax, dword [esi + 0x4c]
mov byte [eax], 1
mov byte [eax + 1], 0x50
mov byte [eax + 2], 0xc1
mov byte [eax + 3], 0x52
mov byte [eax + 4], 0xc0
mov byte [eax + 5], 0x54
mov byte [eax + 6], 4
mov byte [eax + 7], 0x56
mov byte [eax + 8], 0x57
mov byte [eax + 9], 0x48
xor eax, eax
cmp eax, 0xa
jae 0x413b63
mov ecx, dword [esi + 0x4c]
movzx edx, byte [ecx + eax]
mov edi, eax
shl edi, 1
and edi, 0x1f8c4ece
mov ecx, eax
xor ecx, 0xfc62767
add ecx, edi
mov edi, dword [esi]
xor ecx, edx
mov edx, ecx
xor edx, 0x39
shl ecx, 1
and ecx, 0x8c
sub ecx, edx
add cl, 1
mov edx, dword [esi + 0x4c]
mov byte [edx + eax], cl
add eax, 1
jmp 0x413b22
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov eax, dword [esi + 0x4c]
mov dword [esp + 4], eax
call fcn.00415070
add esp, 8
mov edx, dword [esi + 4]
xor eax, eax
jmp 0x413b82
cmp eax, 0
sete cl
test cl, 1
jne 0x413b8f
jmp 0x413b91
xor eax, eax
cmp eax, 0
mov eax, dword [esi + 0x20]
jne 0x414cb4
xor eax, eax
sub esp, 0x1c
mov dword [esi + 4], edx
mov dword [esp], edx
mov eax, dword [esi + 0x160]
mov dword [esp + 4], eax
mov dword [esp + 8], 0x100002
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 5
mov dword [esp + 0x14], 0x60
mov dword [esp + 0x18], 0x80
call fcn.0043d820
add esp, 0x1c
mov dword [esi + 0x140], eax
cmp eax, 0
jl 0x413d16
mov eax, dword [esi + 0x9c]
mov eax, dword [eax]
mov ecx, dword [esi + 0xc]
mov ecx, dword [ecx]
mov ebx, dword [esi + 0x160]
mov edx, dword [ebx]
xor edi, edi
sub esp, 0x10
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0043df10
add esp, 0x10
mov dword [esi + 0x140], eax
mov eax, dword [ebx]
mov dword [esi + 0x1cc], eax
mov al, byte [esi + 0xc4]
mov byte [esi + 0x128], al
mov byte [esi + 0x34], 0xeb
mov byte [esi + 0x35], 0xea
mov byte [esi + 0x36], 0xe9
mov byte [esi + 0x37], 0xe8
xor eax, eax
cmp eax, 4
jae 0x413c95
movzx edx, byte [esi + eax + 0x34]
mov ecx, eax
add ecx, 0x20e57f74
xor ecx, edx
mov edx, ecx
xor edx, 0x72bfba0
mov edi, ecx
or edi, 0xf8d4045f
and edi, edx
or ecx, 0xf8d4045f
add ecx, edi
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esi + eax + 0x34], cl
add eax, 1
jmp 0x413c52
mov eax, dword [esi + 0x34]
mov dword [esi + 0x1a8], eax
xor edx, edx
mov edi, dword [esi]
cmp edx, dword [0x449558]
jb 0x413cac
jmp 0x413d16
mov eax, dword [0x44955c]
cmp dword [eax + edx*8], 0xb430e561
sete cl
mov byte [esi + 0x1b], cl
test cl, 1
jne 0x413cc5
jmp 0x413d09
mov eax, dword [eax + edx*8 + 4]
cmp eax, dword [esi + 0x1a8]
je 0x413d09
mov ecx, dword [0x449560]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esi + 0x1cc]
mov dword [esp + 0xc], eax
mov dword [esi + 0x194], edx
call fcn.0043b830
mov edx, dword [esi + 0x194]
add esp, 0x10
jmp 0x413d09
test byte [esi + 0x1b], 1
je 0x413d11
jmp 0x413d16
add edx, 1
jmp 0x413ca2
mov ebx, dword [esi + 0xc]
mov eax, dword [ebx]
sub esp, 4
mov dword [esp], eax
call fcn.00439e40
add esp, 4
mov dword [ebx], 0
cmp dword [esi + 0x140], 0
jge 0x413d4f
mov ecx, dword [esi + 4]
mov edx, dword [esi + 0x14]
mov dword [esi + 8], 0
mov eax, 4
jmp 0x4142fe
mov edx, dword [esi + 0x14]
cmp edx, 1
mov ecx, dword [esi + 4]
jne 0x414103
mov eax, dword [esi + 0x1f8]
mov al, byte [eax]
mov byte [esi + 0x104], al
mov eax, dword [esi + 0x48]
mov byte [eax], 0xba
mov byte [eax + 1], 0xb3
mov byte [eax + 2], 0x1e
xor ebx, ebx
cmp ebx, 3
jae 0x413e09
mov eax, dword [esi + 0x48]
movzx ecx, byte [eax + ebx]
mov dword [esi + 0x144], ecx
mov edi, ebx
add edi, 0xfc
mov edx, 0x7d28c803
sub edx, ebx
xor ecx, 0xffffffff
mov eax, edx
and eax, ecx
mov ecx, edx
xor ecx, dword [esi + 0x144]
add edx, ecx
mov ecx, 3
sub ecx, ebx
and ecx, 0x5f
and edi, 0xa0
or ecx, edi
xor ecx, 0xa0
and ecx, dword [esi + 0x144]
xor edx, 0xffffffff
add eax, edx
or ecx, eax
mov edx, ecx
shl edx, 1
and edx, 0xd28c803e
xor ecx, 0xe946401f
mov edi, ecx
and edi, edx
shl edi, 1
mov eax, ecx
xor eax, edx
add eax, edi
and ecx, 1
or eax, 1
add eax, ecx
mov ecx, dword [esi + 0x48]
mov byte [ecx + ebx], al
add ebx, 1
jmp 0x413d7c
sub esp, 8
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov eax, dword [esi + 0x48]
mov dword [esp + 4], eax
call fcn.00402480
add esp, 8
mov ebx, eax
mov eax, dword [esi + 0x1f4]
mov al, byte [eax]
mov byte [esi + 0x108], al
mov eax, dword [esi + 0x80]
mov byte [eax], 0xca
mov byte [eax + 1], 0x3e
mov byte [eax + 2], 0xad
xor eax, eax
cmp eax, 3
jae 0x413e7b
mov edi, dword [esi + 0x80]
movzx ecx, byte [edi + eax]
mov edx, eax
add edx, 0x88662c33
xor edx, ecx
mov ecx, edx
and ecx, 0x67
and edx, 0x98
xor edx, 0x99
sub ecx, edx
add cl, 1
mov byte [edi + eax], cl
add eax, 1
jmp 0x413e44
sub esp, 8
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov eax, dword [esi + 0x80]
mov dword [esp + 4], eax
call fcn.00402480
add esp, 8
mov dword [esi + 0x68], eax
sub esp, 4
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.004150c0
add esp, 4
mov edi, eax
mov dword [esi + 0x150], ebx
cmp ebx, 0
setne al
mov dword [esi + 0x64], 0
mov byte [esi + 0x1d], al
test al, 1
jne 0x413ec8
jmp 0x413ee4
sub esp, 4
mov eax, dword [esi + 0x150]
mov dword [esp], eax
call fcn.00408ce0
add esp, 4
sub eax, 0xffffffff
mov dword [esi + 0x64], eax
jmp 0x413ee4
cmp dword [esi + 0x68], 0
setne cl
xor eax, eax
mov byte [esi + 0x1e], cl
test cl, 1
jne 0x413ef7
jmp 0x413f0d
sub esp, 4
mov eax, dword [esi + 0x68]
mov dword [esp], eax
call fcn.00408ce0
add esp, 4
sub eax, 0xffffffff
jmp 0x413f0d
mov ecx, edi
and ecx, 9
or edi, 9
add edi, ecx
mov ecx, edi
mov edx, dword [esi + 0x64]
and ecx, edx
or edi, edx
add edi, ecx
mov dword [esi + 0x1d8], eax
xor eax, 0xffffffff
sub eax, 0xffffffff
sub 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 0x413f54
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408bc0
add esp, 4
mov dword [esi + 8], eax
mov eax, dword [esi + 0x1f0]
mov al, byte [eax]
mov byte [esi + 0x10c], al
mov eax, dword [esi + 0x7c]
mov byte [eax], 0xba
mov byte [eax + 1], 0x49
mov byte [eax + 2], 0xbf
mov byte [eax + 3], 0x4b
mov byte [eax + 4], 0xa2
mov byte [eax + 5], 0x4d
mov byte [eax + 6], 0xaa
mov byte [eax + 7], 0x4f
mov byte [eax + 8], 0xbc
mov byte [eax + 9], 0x51
mov byte [eax + 0xa], 0xbe
mov byte [eax + 0xb], 0x53
mov byte [eax + 0xc], 0x67
mov byte [eax + 0xd], 0x55
mov byte [eax + 0xe], 0x64
mov byte [eax + 0xf], 0x57
mov byte [eax + 0x10], 0x58
mov byte [eax + 0x11], 0x59
xor edi, edi
cmp edi, 0x12
jae 0x414012
mov ebx, dword [esi + 0x7c]
movzx ecx, byte [ebx + edi]
mov dword [esi + 0x178], ecx
mov edx, edi
add edx, 0xf49def08
mov eax, ecx
shl eax, 1
xor eax, 0xffffffff
add eax, ecx
mov ecx, edx
and ecx, eax
shl edx, 1
mov eax, edi
add eax, 7
sub eax, edx
and eax, dword [esi + 0x178]
or eax, ecx
add al, 0xc0
mov byte [ebx + edi], al
mov eax, edi
xor eax, 0x467ceafe
shl edi, 1
and edi, 2
sub edi, eax
add edi, 0x467ceaff
jmp 0x413fbf
sub esp, 8
mov eax, dword [esi + 8]
mov dword [esp], eax
mov eax, dword [esi + 0x7c]
mov dword [esp + 4], eax
call fcn.0040a800
add esp, 8
mov ecx, eax
add ecx, 2
mov word [eax], 0x20
add ecx, 2
mov word [eax + 2], 0x22
sub esp, 8
mov dword [esp], ecx
mov edi, dword [esi + 4]
mov dword [esp + 4], edi
call fcn.0040a800
mov ecx, edi
add esp, 8
mov ebx, eax
add ebx, 2
mov word [eax], 0x22
cmp ecx, 0
sete al
test al, 1
jne 0x414078
jmp 0x41406a
sub esp, 4
mov dword [esp], ecx
call fcn.00408bd0
add esp, 4
test byte [esi + 0x1d], 1
jne 0x414082
mov edi, dword [esi]
jmp 0x4140bf
mov ecx, ebx
add ecx, 2
mov word [ebx], 0x2c
xor eax, eax
sub esp, 0x10
mov ebx, ecx
mov dword [esp], ecx
mov eax, dword [esi + 0x64]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x150]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b3f0
add esp, 0x10
mov edi, dword [esi]
shl eax, 1
add ebx, eax
jmp 0x4140bf
test byte [esi + 0x1e], 1
jne 0x4140c7
jmp 0x4140fa
mov eax, ebx
add eax, 2
mov word [ebx], 0x2c
xor ecx, ecx
sub esp, 0x10
mov dword [esp], eax
mov eax, dword [esi + 0x1d8]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x68]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b3f0
add esp, 0x10
xor ecx, ecx
xor edx, edx
jmp 0x4142fc
mov dword [esi + 8], 0
cmp edx, 2
je 0x414114
jmp 0x4142fc
sub esp, 4
mov dword [esp], ecx
call fcn.004150c0
add esp, 4
jmp 0x414124
add eax, 0x33af74bc
add eax, 0xcc508b61
add eax, 1
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x414147
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408bc0
add esp, 4
mov dword [esi + 8], eax
mov eax, dword [esi + 0x1ec]
mov al, byte [eax]
mov byte [esi + 0x110], al
mov eax, dword [esi + 0x78]
mov byte [eax], 0x26
mov byte [eax + 1], 0x45
mov byte [eax + 2], 0x46
mov byte [eax + 3], 0x47
xor eax, eax
cmp eax, 4
jae 0x4141a6
mov ebx, dword [esi + 0x78]
movzx edi, byte [ebx + eax]
mov edx, eax
add edx, 0x64
mov ecx, 0x9b
sub ecx, eax
and ecx, edi
xor edi, 0xffffffff
and edx, edi
or ecx, edx
add cl, 0xe0
mov byte [ebx + eax], cl
add eax, 1
jmp 0x41417a
mov eax, dword [esi + 0x1e8]
mov al, byte [eax]
mov byte [esi + 0x114], al
mov eax, dword [esi + 0x74]
mov byte [eax], 0xc0
mov byte [eax + 1], 0xb1
mov byte [eax + 2], 0xdd
mov byte [eax + 3], 0xb3
mov byte [eax + 4], 0xc3
mov byte [eax + 5], 0xb5
mov byte [eax + 6], 0xd3
mov byte [eax + 7], 0xb7
mov byte [eax + 8], 0xca
mov byte [eax + 9], 0xb9
mov byte [eax + 0xa], 0xc9
mov byte [eax + 0xb], 0xbb
mov byte [eax + 0xc], 0xd4
mov byte [eax + 0xd], 0xbd
mov byte [eax + 0xe], 0xdb
mov byte [eax + 0xf], 0xbf
mov byte [eax + 0x10], 0xac
mov byte [eax + 0x11], 0xc1
mov byte [eax + 0x12], 0xae
mov byte [eax + 0x13], 0xc3
mov byte [eax + 0x14], 0xe4
mov byte [eax + 0x15], 0xc5
mov byte [eax + 0x16], 0xeb
mov byte [eax + 0x17], 0xc7
mov byte [eax + 0x18], 0xad
mov byte [eax + 0x19], 0xc9
mov byte [eax + 0x1a], 0xb2
mov byte [eax + 0x1b], 0xcb
mov byte [eax + 0x1c], 0xa9
mov byte [eax + 0x1d], 0xcd
mov byte [eax + 0x1e], 0xad
mov byte [eax + 0x1f], 0xcf
mov byte [eax + 0x20], 0xf0
mov byte [eax + 0x21], 0xd1
mov byte [eax + 0x22], 0xb0
mov byte [eax + 0x23], 0xd3
mov byte [eax + 0x24], 0xad
mov byte [eax + 0x25], 0xd5
mov byte [eax + 0x26], 0xa6
mov byte [eax + 0x27], 0xd7
mov byte [eax + 0x28], 0xb9
mov byte [eax + 0x29], 0xd9
mov byte [eax + 0x2a], 0xa9
mov byte [eax + 0x2b], 0xdb
mov byte [eax + 0x2c], 0xaf
mov byte [eax + 0x2d], 0xdd
mov byte [eax + 0x2e], 0xfe
mov byte [eax + 0x2f], 0xdf
mov byte [eax + 0x30], 0xcd
mov byte [eax + 0x31], 0xe1
mov byte [eax + 0x32], 0x84
mov byte [eax + 0x33], 0xe3
mov byte [eax + 0x34], 0xc4
mov byte [eax + 0x35], 0xe5
mov byte [eax + 0x36], 0xc4
mov byte [eax + 0x37], 0xe7
mov byte [eax + 0x38], 0xe8
mov byte [eax + 0x39], 0xe9
xor eax, eax
cmp eax, 0x3a
jae 0x4142bd
mov edi, dword [esi + 0x74]
mov cl, byte [edi + eax]
mov dl, al
add dl, 0x30
xor dl, cl
xor dl, 0x80
mov byte [edi + eax], dl
add eax, 1
jmp 0x4142a0
sub esp, 8
mov eax, dword [esi + 8]
mov dword [esp], eax
mov eax, dword [esi + 0x74]
mov dword [esp + 4], eax
call fcn.0040a800
mov dword [esp], eax
mov edi, dword [esi + 4]
mov dword [esp + 4], edi
call fcn.0040a800
mov dword [esp], eax
mov eax, dword [esi + 0x78]
mov dword [esp + 4], eax
call fcn.0040a800
mov ecx, edi
add esp, 8
mov edx, 2
mov edi, dword [esi]
xor eax, eax
mov dword [esi + 0x14], edx
cmp eax, 0
sete al
test al, 1
mov eax, dword [esi + 0x20]
jne 0x414591
jmp 0x414cb4
xor edi, 1
mov eax, dword [esi + 0x14]
xor eax, 2
or edi, eax
sete al
mov dword [esi + 8], 0
test al, 1
mov ecx, 0
mov edi, dword [esi]
jne 0x41433c
jmp 0x414591
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call fcn.00414cd0
add esp, 4
mov edi, eax
add edi, 0xfd72e
add edi, 1
sub edi, 0xfd72e
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x414378
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408bc0
add esp, 4
mov edx, eax
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x14c], edx
mov dword [esp], edx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040b3f0
add esp, 0x10
mov eax, dword [esi + 0x9c]
mov eax, dword [eax]
mov ecx, eax
and ecx, 0x18
shl ecx, 1
xor eax, 0x18
add eax, ecx
add eax, 1
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4143e0
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00408bc0
add esp, 4
mov dword [esi + 8], eax
mov eax, dword [esi + 0x1e4]
mov al, byte [eax]
mov byte [esi + 0x118], al
mov eax, dword [esi + 0x44]
mov byte [eax], 0x45
mov byte [eax + 1], 0xf6
mov byte [eax + 2], 0x48
mov byte [eax + 3], 0xc8
mov byte [eax + 4], 0x7e
mov byte [eax + 5], 0xca
mov byte [eax + 6], 0x6e
mov byte [eax + 7], 0xcc
mov byte [eax + 8], 0x7f
mov byte [eax + 9], 0xce
mov byte [eax + 0xa], 0x7c
mov byte [eax + 0xb], 0xc0
mov byte [eax + 0xc], 0x79
mov byte [eax + 0xd], 0xc2
mov byte [eax + 0xe], 0x66
mov byte [eax + 0xf], 0xc4
mov byte [eax + 0x10], 0x79
mov byte [eax + 0x11], 0xc6
mov byte [eax + 0x12], 0x7b
mov byte [eax + 0x13], 0xd8
mov byte [eax + 0x14], 0x39
mov byte [eax + 0x15], 0xda
mov byte [eax + 0x16], 0x26
mov byte [eax + 0x17], 0xdc
mov byte [eax + 0x18], pe_nt_image_headers32
mov byte [eax + 0x19], 0xde
mov byte [eax + 0x1a], 0x57
mov byte [eax + 0x1b], 0xd0
mov byte [eax + 0x1c], 0x74
mov byte [eax + 0x1d], 0xd2
mov byte [eax + 0x1e], 0x70
mov byte [eax + 0x1f], 0xd4
mov byte [eax + 0x20], 0x35
mov byte [eax + 0x21], 0xd6
mov byte [eax + 0x22], 0x75
mov byte [eax + 0x23], 0xa8
mov byte [eax + 0x24], 0x20
mov byte [eax + 0x25], 0xaa
mov byte [eax + 0x26], 0x1b
mov byte [eax + 0x27], 0xac
mov byte [eax + 0x28], 0xc
mov byte [eax + 0x29], 0xae
mov byte [eax + 0x2a], 0x1c
mov byte [eax + 0x2b], 0xa0
mov byte [eax + 0x2c], 0x12
mov byte [eax + 0x2d], 0xa2
mov byte [eax + 0x2e], 0x43
mov byte [eax + 0x2f], 0xa4
mov byte [eax + 0x30], 0xa5
mov byte [eax + 0x31], 0xa6
xor edx, edx
mov edi, dword [esi]
cmp edx, 0x32
jae 0x414546
mov eax, dword [esi + 0x44]
movzx eax, byte [eax + edx]
mov dword [esi + 0x188], eax
mov ecx, edx
add ecx, 0x4038121d
mov edi, ecx
and edi, eax
mov ebx, edi
and ebx, 2
xor ebx, 2
mov eax, edi
and eax, 0xfd
imul eax, ebx
mov ebx, edi
and ebx, 2
or edi, 2
imul edi, ebx
add edi, eax
add edi, 0x32d4ad52
sub ecx, edi
mov edi, dword [esi]
add ecx, 0x32d4ad52
add ecx, dword [esi + 0x188]
add ecx, 0xfe3f6f17
mov eax, ecx
shl eax, 1
and eax, 2
xor ecx, 1
add ecx, eax
mov eax, dword [esi + 0x44]
mov byte [eax + edx], cl
mov eax, edx
shl eax, 1
and eax, 2
xor edx, 1
add edx, eax
jmp 0x4144cd
sub esp, 8
mov eax, dword [esi + 8]
mov dword [esp], eax
mov eax, dword [esi + 0x44]
mov dword [esp + 4], eax
call fcn.0040a800
mov dword [esp], eax
mov eax, dword [esi + 0x14c]
mov dword [esp + 4], eax
call fcn.0040a800
add esp, 8
jmp 0x414572
sub esp, 4
mov eax, dword [esi + 0x14c]
mov dword [esp], eax
call fcn.00408bd0
add esp, 4
xor ecx, ecx
mov dword [esi + 0x14], 2
jmp 0x414591
mov edx, dword [esi + 0x14]
test edx, edx
mov dword [esi + 4], ecx
je 0x4145b8
jmp 0x41459d
mov eax, edx
sub eax, 1
je 0x41474c
jmp 0x4145aa
sub edx, 2
je 0x414a09
jmp 0x414c68
test byte [esi + 0x1f], 1
jne 0x4145c3
jmp 0x41474c
jmp 0x4145c5
xor eax, eax
mov ecx, 0x11
mov edi, dword [esi + 0x15c]
rep stosd dword es:[edi], eax
mov edi, dword [esi + 0x15c]
mov dword [edi], 0x44
mov eax, dword [0x44854c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x755f867b
call fcn.0043d220
add esp, 8
test eax, eax
setne cl
xor ecx, ecx
sub esp, 0x28
mov ecx, dword [esi + 4]
mov dword [esp], ecx
mov ecx, dword [esi + 8]
mov dword [esp + 4], ecx
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], edi
mov ecx, dword [esi + 0x158]
mov dword [esp + 0x24], ecx
call eax
cmp eax, 0
mov edi, dword [esi]
je 0x414747
mov eax, dword [esi + 0x158]
mov eax, dword [eax]
mov dword [esi + 0x1c0], eax
mov al, byte [esi + 0xc0]
mov byte [esi + 0x12c], al
mov byte [esi + 0x30], 0xeb
mov byte [esi + 0x31], 0xea
mov byte [esi + 0x32], 0xe9
mov byte [esi + 0x33], 0xe8
xor eax, eax
cmp eax, 4
jae 0x4146cc
movzx edx, byte [esi + eax + 0x30]
mov ecx, eax
add ecx, 0x20e57f74
xor ecx, edx
mov edx, ecx
xor edx, 0x72bfba0
mov edi, ecx
or edi, 0xf8d4045f
and edi, edx
or ecx, 0xf8d4045f
add ecx, edi
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esi + eax + 0x30], cl
add eax, 1
jmp 0x414689
mov ecx, dword [esi + 0x30]
xor edi, edi
cmp edi, dword [0x449558]
jb 0x4146db
jmp 0x414743
mov eax, dword [0x44955c]
cmp dword [eax + edi*8], 0xb430e561
sete dl
test dl, 1
jne 0x4146f1
jmp 0x414737
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x414737
mov dword [esi + 0x198], ecx
mov ecx, dword [0x449560]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esi + 0x1c0]
mov dword [esp + 0xc], eax
mov byte [esi + 0x18], dl
call fcn.0043b830
mov dl, byte [esi + 0x18]
mov ecx, dword [esi + 0x198]
add esp, 0x10
jmp 0x414737
test dl, 1
je 0x41473e
jmp 0x414743
add edi, 1
jmp 0x4146d1
mov edi, dword [esi]
jmp 0x414747
jmp 0x414c68
mov eax, dword [0x44854c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x4e0c8565
call fcn.0043d220
add esp, 8
cmp eax, 0
setne cl
test cl, 1
jne 0x414774
jmp 0x414776
jmp 0x414776
test cl, 1
jne 0x41477d
xor eax, eax
mov ecx, dword [esi + 0xc]
mov ecx, dword [ecx]
xor edx, edx
lea edx, [0x422330]
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], 0
mov dword [esp + 8], edx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
call eax
mov dword [esi + 0x170], eax
cmp eax, 0
je 0x414a04
mov eax, dword [esi + 0x1e0]
mov cl, byte [eax]
mov byte [esi + 0x11c], cl
mov eax, dword [esi + 0x70]
mov byte [eax], 0x9b
mov byte [eax + 1], 0x56
mov byte [eax + 2], 0xd1
mov byte [eax + 3], 0x72
mov byte [eax + 4], 0x90
mov byte [eax + 5], 0x9f
mov byte [eax + 6], 0x9e
mov byte [eax + 7], 0x9d
xor edi, edi
cmp edi, 8
jae 0x41482c
mov eax, dword [esi + 0x70]
mov bl, byte [eax + edi]
movzx ecx, bl
mov dword [esi + 0x174], ecx
mov ecx, edi
add ecx, 0x2568b83
mov edx, ecx
and edx, dword [esi + 0x174]
shl edx, 1
sub ecx, edx
add cl, bl
add cl, 0xe8
mov byte [eax + edi], cl
add edi, 1
jmp 0x4147f7
mov ecx, dword [esi + 0x70]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov edx, dword [esi + 0x154]
mov dword [edx + 4], ecx
mov dword [edx], eax
mov al, byte [esi + 0x120]
mov byte [esi + 0x124], al
mov byte [esi + 0x38], 0xeb
mov byte [esi + 0x39], 0xea
mov byte [esi + 0x3a], 0xe9
mov byte [esi + 0x3b], 0xe8
xor ecx, ecx
cmp ecx, 4
jae 0x41489f
movzx eax, byte [esi + ecx + 0x38]
mov edx, ecx
add edx, 0x20e57f74
xor edx, eax
mov eax, edx
xor eax, 0x72bfba0
mov edi, edx
or edi, 0xf8d4045f
and edi, eax
or edx, 0xf8d4045f
add edx, edi
mov eax, edx
shl eax, 1
and eax, 2
xor edx, 1
add edx, eax
mov byte [esi + ecx + 0x38], dl
add ecx, 1
jmp 0x41485d
mov eax, dword [esi + 0x38]
xor edi, edi
cmp edi, dword [0x449558]
jb 0x4148ae
jmp 0x41492d
mov ecx, dword [0x44955c]
cmp dword [ecx + edi*8], 0xa67d73aa
sete dl
test dl, 1
jne 0x4148c5
jmp 0x41491e
mov ecx, dword [ecx + edi*8 + 4]
cmp ecx, eax
je 0x41491e
mov dword [esi + 0x1ac], eax
mov eax, dword [0x449560]
mov byte [esi + 0x1c], dl
xor edx, edx
sub esp, 0x18
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 0xc
mov eax, dword [esi + 0x170]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0x154]
mov dword [esp + 0x14], eax
call fcn.0043b830
mov dl, byte [esi + 0x1c]
add esp, 0x18
mov eax, dword [esi + 0x1ac]
jmp 0x41491e
test dl, 1
je 0x414925
jmp 0x41492d
add edi, 1
jmp 0x4148a4
mov al, byte [esi + 0xbc]
mov byte [esi + 0x130], al
mov byte [esi + 0x2c], 0xeb
mov byte [esi + 0x2d], 0xea
mov byte [esi + 0x2e], 0xe9
mov byte [esi + 0x2f], 0xe8
xor ecx, ecx
cmp ecx, 4
jae 0x41498d
movzx eax, byte [esi + ecx + 0x2c]
mov edx, ecx
add edx, 0x20e57f74
xor edx, eax
mov eax, edx
xor eax, 0x72bfba0
mov edi, edx
or edi, 0xf8d4045f
and edi, eax
or edx, 0xf8d4045f
add edx, edi
mov eax, edx
shl eax, 1
and eax, 2
xor edx, 1
add edx, eax
mov byte [esi + ecx + 0x2c], dl
add ecx, 1
jmp 0x41494b
mov eax, dword [esi + 0x2c]
xor edi, edi
cmp edi, dword [0x449558]
jb 0x41499c
jmp 0x414a02
mov ecx, dword [0x44955c]
cmp dword [ecx + edi*8], 0xb430e561
sete dl
test dl, 1
jne 0x4149b3
jmp 0x4149f6
mov ecx, dword [ecx + edi*8 + 4]
cmp ecx, eax
je 0x4149f6
mov dword [esi + 0x19c], eax
mov eax, dword [0x449560]
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 4
mov eax, dword [esi + 0x170]
mov dword [esp + 0xc], eax
mov bl, dl
call fcn.0043b830
mov dl, bl
add esp, 0x10
mov eax, dword [esi + 0x19c]
jmp 0x4149f6
test dl, 1
je 0x4149fd
jmp 0x414a02
add edi, 1
jmp 0x414992
mov edi, dword [esi]
jmp 0x414c68
xor eax, eax
mov ecx, 0x11
mov edx, dword [esi + 0x1dc]
mov edi, edx
rep stosd dword es:[edi], eax
mov dword [edx], 0x44
mov edi, edx
mov eax, dword [0x44854c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x755f867b
call fcn.0043d220
add esp, 8
test eax, eax
setne cl
xor ecx, ecx
sub esp, 0x28
mov dword [esp], 0
mov ecx, dword [esi + 8]
mov dword [esp + 4], ecx
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0x8000000
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], edi
mov ecx, dword [esi + 0x6c]
mov dword [esp + 0x24], ecx
call eax
cmp eax, 0
je 0x414c62
mov eax, dword [esi + 0x6c]
mov eax, dword [eax + 4]
mov dword [esi + 0x1c8], eax
mov al, byte [esi + 0xb8]
mov byte [esi + 0x134], al
mov byte [esi + 0x28], 0xeb
mov byte [esi + 0x29], 0xea
mov byte [esi + 0x2a], 0xe9
mov byte [esi + 0x2b], 0xe8
xor eax, eax
cmp eax, 4
jae 0x414b08
movzx edx, byte [esi + eax + 0x28]
mov ecx, eax
add ecx, 0x20e57f74
xor ecx, edx
mov edx, ecx
xor edx, 0x72bfba0
mov edi, ecx
or edi, 0xf8d4045f
and edi, edx
or ecx, 0xf8d4045f
add ecx, edi
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esi + eax + 0x28], cl
add eax, 1
jmp 0x414ac5
mov ecx, dword [esi + 0x28]
xor edi, edi
cmp edi, dword [0x449558]
jb 0x414b17
jmp 0x414b7f
mov eax, dword [0x44955c]
cmp dword [eax + edi*8], 0xb430e561
sete dl
test dl, 1
jne 0x414b2d
jmp 0x414b73
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x414b73
mov dword [esi + 0x1a4], ecx
mov ecx, dword [0x449560]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esi + 0x1c8]
mov dword [esp + 0xc], eax
mov byte [esi + 0x1a], dl
call fcn.0043b830
mov dl, byte [esi + 0x1a]
mov ecx, dword [esi + 0x1a4]
add esp, 0x10
jmp 0x414b73
test dl, 1
je 0x414b7a
jmp 0x414b7f
add edi, 1
jmp 0x414b0d
mov eax, dword [esi + 0x6c]
mov eax, dword [eax]
mov dword [esi + 0x1c4], eax
mov al, byte [esi + 0xb4]
mov byte [esi + 0x138], al
mov byte [esi + 0x24], 0xeb
mov byte [esi + 0x25], 0xea
mov byte [esi + 0x26], 0xe9
mov byte [esi + 0x27], 0xe8
xor eax, eax
cmp eax, 4
jae 0x414beb
movzx edx, byte [esi + eax + 0x24]
mov ecx, eax
add ecx, 0x20e57f74
xor ecx, edx
mov edx, ecx
xor edx, 0x72bfba0
mov edi, ecx
or edi, 0xf8d4045f
and edi, edx
or ecx, 0xf8d4045f
add ecx, edi
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esi + eax + 0x24], cl
add eax, 1
jmp 0x414ba8
mov ecx, dword [esi + 0x24]
xor edi, edi
cmp edi, dword [0x449558]
jb 0x414bfa
jmp 0x414c62
mov eax, dword [0x44955c]
cmp dword [eax + edi*8], 0xb430e561
sete dl
test dl, 1
jne 0x414c10
jmp 0x414c56
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x414c56
mov dword [esi + 0x1a0], ecx
mov ecx, dword [0x449560]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esi + 0x1c4]
mov dword [esp + 0xc], eax
mov byte [esi + 0x19], dl
call fcn.0043b830
mov dl, byte [esi + 0x19]
mov ecx, dword [esi + 0x1a0]
add esp, 0x10
jmp 0x414c56
test dl, 1
je 0x414c5d
jmp 0x414c62
add edi, 1
jmp 0x414bf0
mov edi, dword [esi]
jmp 0x414c66
jmp 0x414c68
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call fcn.00439e40
add esp, 4
mov eax, dword [esi + 4]
cmp eax, 0
je 0x414c93
sub esp, 4
mov dword [esp], eax
call fcn.00408bd0
add esp, 4
jmp 0x414c93
cmp dword [esi + 8], 0
mov eax, dword [esi + 0x20]
je 0x414cb2
sub esp, 4
mov eax, dword [esi + 8]
mov dword [esp], eax
call fcn.00408bd0
add esp, 4
mov eax, dword [esi + 0x20]
jmp 0x414cb2
jmp 0x414cb4
add eax, 1
mov ebx, eax
jmp 0x412f32
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret