Function at 0x415320
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x6f0
mov esi, esp
mov eax, dword [ebp + 8]
push eax
mov dword [esi + 0x23c], esp
push eax
mov dword [esi + 0x17c], esp
sub esp, 0x10
mov ecx, esp
push eax
mov dword [esi + 0x238], esp
sub esp, 0x10
mov dword [esi + 0x178], esp
push eax
mov dword [esi + 0x234], esp
jmp 0x415360
mov dword [esi + 0x58], ecx
sub esp, 0xc
mov dword [esi + 0x3c], esp
push eax
mov dword [esi + 0x230], esp
push eax
mov dword [esi + 0x174], esp
sub esp, 8
mov edi, esp
push eax
mov dword [esi + 0x22c], esp
sub esp, 8
mov dword [esi + 0x228], esp
push eax
mov dword [esi + 0x224], esp
sub esp, 0x18
mov dword [esi + 0x54], esp
push eax
mov dword [esi + 0x220], esp
sub esp, 8
mov dword [esi + 0x38], esp
push eax
mov dword [esi + 0x21c], esp
sub esp, 0x40
mov dword [esi + 0x50], esp
push eax
mov dword [esi + 0x218], esp
sub esp, 0x38
mov dword [esi + 0x4c], esp
push eax
mov dword [esi + 0x214], esp
sub esp, 0x44
mov dword [esi + 0x210], esp
sub esp, 0x10
mov dword [esi + 0x16c], esp
sub esp, 8
mov ecx, esp
and ecx, 0xfffffff8
mov dword [esi + 0x168], ecx
mov esp, ecx
push eax
sub esp, 0x40
mov dword [esi + 0x20c], esp
sub esp, 0x10
mov dword [esi + 0x48], esp
sub esp, 4
mov dword [esp], eax
call fcn.00404810
add esp, 4
mov ebx, eax
cmp ebx, 0
sete al
test al, 1
jne 0x415415
jmp 0x41541c
xor eax, eax
jmp 0x41729d
mov dword [esi + 0x170], edi
xor edi, edi
jmp 0x415426
sub esp, 4
mov dword [esp], ebx
call fcn.004049e0
add esp, 4
cmp edi, eax
jb 0x41543f
mov al, 1
jmp 0x41729d
sub esp, 8
mov dword [esp], ebx
mov dword [esp + 4], edi
call fcn.004049f0
add esp, 8
mov dword [esi + 0x14], eax
mov al, byte [esi + 0x98]
mov byte [esi + 0xd8], al
mov byte [esi + 0x2c], 0x6b
mov byte [esi + 0x2d], 0xe7
mov eax, 2
mov byte [esi + eax + 0x2c], 0
add eax, 1
cmp eax, 4
jne 0x41546d
mov dword [esi + 0xc], edi
mov dword [esi + 8], ebx
xor eax, eax
cmp eax, 4
jae 0x415525
movzx ecx, byte [esi + eax + 0x2c]
mov edi, eax
xor edi, 0x1e7a5e26
mov edx, eax
or edx, 0xe185a1d9
and edx, edi
mov ebx, edx
and ebx, 0xfffffffd
mov edi, edx
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, edx
and ebx, 2
or edx, 2
imul edx, ebx
add edx, edi
mov edi, eax
xor edi, 0xe185a1d9
add edi, edx
xor edi, ecx
mov edx, edi
add edx, 2
mov ebx, edi
add ebx, 0xc3
mov ecx, 0x3d
sub ecx, edi
or ecx, 1
add ecx, ebx
mov ebx, 0x679c293d
sub ebx, edi
mov edi, ebx
and edi, 0xc0
and edx, 0x3f
or edi, edx
xor edi, 0xc1
and ebx, 1
xor ebx, 1
or edi, ebx
add ecx, edi
mov byte [esi + eax + 0x2c], cl
mov ecx, eax
xor ecx, 0x7b70a166
shl eax, 1
and eax, 2
sub eax, ecx
add eax, 0x7b70a167
jmp 0x415482
lea eax, [esi + 0x2c]
sub esp, 0xc
mov ecx, dword [esi + 0x14]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00404980
add esp, 0xc
cmp eax, 0
setne al
test al, 1
mov ebx, dword [esi + 8]
mov edi, dword [esi + 0xc]
jne 0x41555a
jmp 0x4156ea
mov al, byte [esi + 0x94]
mov byte [esi + 0xdc], al
mov byte [esi + 0x150], 0x2a
mov byte [esi + 0x151], 0x3b
mov byte [esi + 0x152], 0x86
mov eax, 3
mov byte [esi + eax + 0x150], 0
add eax, 1
cmp eax, 5
jne 0x415580
xor eax, eax
cmp eax, 5
jae 0x4155fe
movzx ebx, byte [esi + eax + 0x150]
mov dword [esi + 0x158], ebx
mov edi, eax
shl edi, 1
and edi, 0x16322cc2
mov edx, eax
xor edx, 0xb191661
add edx, edi
xor ebx, 0xffffffff
mov edi, edx
and edi, ebx
mov ecx, edx
xor ecx, dword [esi + 0x158]
mov ebx, edx
add ebx, ecx
mov ecx, edx
add ecx, 1
xor edx, 0xffffffff
or edx, dword [esi + 0x158]
add edx, ecx
add edi, edx
sub ebx, edi
add bl, 0x1b
mov byte [esi + eax + 0x150], bl
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 0x415592
lea eax, [esi + 0x150]
sub esp, 0xc
mov ecx, dword [esi + 0x14]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00404980
add esp, 0xc
cmp eax, 0
mov ebx, dword [esi + 8]
mov edi, dword [esi + 0xc]
je 0x4156ea
mov al, byte [esi + 0x90]
mov byte [esi + 0xe0], al
mov byte [esi + 0x198], 0x65
mov byte [esi + 0x199], 0x89
mov eax, 2
mov byte [esi + eax + 0x198], 0
add eax, 1
cmp eax, 5
jne 0x41564f
xor eax, eax
cmp eax, 5
jae 0x4156b6
movzx ebx, byte [esi + eax + 0x198]
mov edx, eax
add edx, 0x5e
mov ecx, 0xa1
sub ecx, eax
mov edi, ebx
add edi, 1
mov dword [esi + 0x1a0], edi
mov edi, ebx
xor edi, 0xffffffff
or ecx, edi
add ecx, dword [esi + 0x1a0]
xor ebx, 0xffffffff
and edx, ebx
or ecx, edx
add cl, 0x2a
mov byte [esi + eax + 0x198], cl
add eax, 0x634f9d24
mov ecx, eax
and ecx, 0xd
or eax, 0x9cb062dd
add eax, ecx
jmp 0x415661
sub esp, 0xc
lea eax, [esi + 0x198]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x14]
mov dword [esp], eax
mov dword [esp + 8], 3
call fcn.00404980
add esp, 0xc
test eax, eax
sete al
test al, 1
mov ebx, dword [esi + 8]
mov edi, dword [esi + 0xc]
jne 0x4156ea
jmp 0x4156ef
jmp 0x417295
mov al, byte [esi + 0x8c]
mov byte [esi + 0xe4], al
mov byte [esi + 0x190], 0x7f
mov byte [esi + 0x191], 0xeb
mov eax, 2
mov byte [esi + eax + 0x190], 0
add eax, 1
cmp eax, 7
jne 0x41570e
xor eax, eax
cmp eax, 7
jae 0x415742
mov cl, byte [esi + eax + 0x190]
mov dl, al
add dl, 0x57
xor dl, cl
add dl, 0x4d
mov byte [esi + eax + 0x190], dl
add eax, 1
jmp 0x415720
lea eax, [esi + 0x190]
sub esp, 8
mov ecx, dword [esi + 0x14]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00404700
add esp, 8
mov dword [esi + 0x204], eax
mov al, byte [esi + 0x88]
mov byte [esi + 0xe8], al
mov byte [esi + 0x148], 0xa6
mov byte [esi + 0x149], 0xd5
mov byte [esi + 0x14a], 0x42
mov eax, 3
mov byte [esi + eax + 0x148], 0
add eax, 1
cmp eax, 8
jne 0x415789
xor eax, eax
cmp eax, 8
jae 0x4157ec
movzx ecx, byte [esi + eax + 0x148]
mov edi, eax
add edi, 0x1f8a5c90
mov edx, edi
and edx, ecx
shl edx, 1
sub edx, edi
mov edi, ecx
xor edi, 0xffffffff
mov ebx, edx
and ebx, edi
xor edx, 0xffffffff
and ecx, edx
sub ecx, ebx
mov ebx, dword [esi + 8]
mov edx, ecx
xor edx, 0xb0
shl ecx, 1
and ecx, 0x9e
sub ecx, edx
add cl, 0xe0
mov byte [esi + eax + 0x148], cl
add eax, 1
jmp 0x41579b
sub esp, 8
lea eax, [esi + 0x148]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x14]
mov dword [esp], eax
call fcn.00404760
add esp, 8
fnstcw word [esi + 0x32]
movzx eax, word [esi + 0x32]
or eax, 0xc00
mov word [esi + 0x146], ax
fldcw word [esi + 0x146]
fistp dword [esi + 0x244]
fldcw word [esi + 0x32]
mov ecx, dword [esi + 0x244]
mov al, byte [esi + 0x84]
mov byte [esi + 0xec], al
mov byte [esi + 0x28], 0x8f
mov byte [esi + 0x29], 0x2b
mov eax, 2
mov byte [esi + eax + 0x28], 0
add eax, 1
cmp eax, 4
jne 0x415848
mov dword [esi + 0x34], ecx
xor eax, eax
cmp eax, 4
jae 0x415896
movzx edx, byte [esi + eax + 0x28]
mov ecx, eax
add ecx, 0x8bf2c487
xor ecx, edx
mov edi, ecx
xor edi, 0xa3
mov edx, ecx
or edx, 0x5c
and edx, edi
or ecx, 0x5c
add edx, ecx
add dl, 1
mov byte [esi + eax + 0x28], dl
mov ecx, eax
shl ecx, 1
or ecx, 1
sub ecx, eax
mov eax, ecx
jmp 0x41585a
sub esp, 8
lea eax, [esi + 0x28]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x14]
mov dword [esp], eax
call fcn.00404760
add esp, 8
fnstcw word [esi + 0x30]
movzx eax, word [esi + 0x30]
or eax, 0xc00
mov word [esi + 0x144], ax
fldcw word [esi + 0x144]
fistp dword [esi + 0x240]
fldcw word [esi + 0x30]
mov edi, dword [esi + 0x240]
lea eax, [esi + 0x2e8]
xor ecx, ecx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], 0x400
mov eax, dword [esi + 0x204]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ed20
add esp, 0x10
lea eax, [esi + 0x2e8]
lea ecx, [esi + 0x18]
lea edx, [esi + 0x18c]
sub esp, 0xc
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
call fcn.0040f410
add esp, 0xc
test al, 1
mov edx, dword [esi + 0x34]
jne 0x41593c
jmp 0x415934
mov edi, dword [esi + 0xc]
jmp 0x417295
cmp edi, 0
sete al
mov byte [esi + 0x27], al
test al, 1
jne 0x41594e
jmp 0x416826
mov al, byte [esi + 0x80]
mov byte [esi + 0xf0], al
mov byte [esi + 0x184], 0x68
mov byte [esi + 0x185], 0x99
mov eax, 2
mov byte [esi + eax + 0x184], 0
add eax, 1
cmp eax, 7
jne 0x41596d
xor eax, eax
cmp eax, 7
jae 0x4159a1
mov cl, byte [esi + eax + 0x184]
mov dl, al
add dl, 0xda
xor dl, cl
add dl, 0xbe
mov byte [esi + eax + 0x184], dl
add eax, 1
jmp 0x41597f
lea eax, [esi + 0x184]
sub esp, 8
mov ecx, dword [esi + 0x14]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00404700
add esp, 8
cmp eax, 0
je 0x415afd
sub esp, 4
mov dword [esi + 0x1cc], eax
mov dword [esp], eax
call fcn.004172b0
add esp, 4
mov dword [esi + 0x15c], eax
sub eax, 0xffffffff
mov ecx, 2
mov dword [esi + 0x1c8], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4159fe
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.0040c9f0
add esp, 4
mov edi, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], edi
mov eax, dword [esi + 0x1c8]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1cc]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ed20
add esp, 0x10
xor eax, eax
lea eax, [esi + 0x7c]
sub esp, 0x18
mov dword [esp], 0
mov dword [esi + 0x1ec], edi
mov dword [esp + 4], edi
mov ecx, dword [esi + 0x15c]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x44ac34]
mov eax, dword [esi + 0x7c]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x415a90
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.0040c9f0
add esp, 4
mov ecx, dword [0x44ac34]
mov dword [esi + 0x1a8], ecx
mov ecx, dword [esi + 0x7c]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov edi, dword [esi + 0x1ec]
mov dword [esp + 4], edi
mov edx, dword [esi + 0x15c]
mov dword [esp + 8], edx
mov dword [esi + 4], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [esi + 0x7c]
mov dword [esp + 0x14], eax
call dword [esi + 0x1a8]
sub esp, 4
mov dword [esp], edi
call fcn.0040ca00
add esp, 4
mov ecx, dword [esi + 4]
jmp 0x415af8
jmp 0x41600c
mov al, byte [esi + 0x70]
mov byte [esi + 0xf4], al
mov byte [esi + 0x74], 0xc4
mov byte [esi + 0x75], 0xc7
mov byte [esi + 0x76], 0xc0
mov byte [esi + 0x77], 0x40
mov eax, 4
mov byte [esi + eax + 0x74], 0
add eax, 1
cmp eax, 6
jne 0x415b1b
xor eax, eax
cmp eax, 6
jae 0x415b77
movzx ecx, byte [esi + eax + 0x74]
mov edx, eax
add edx, 0xd1
and edx, ecx
mov ebx, edx
and ebx, 0xfd
mov edi, edx
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, edx
and ebx, 2
or edx, 2
imul edx, ebx
mov ebx, dword [esi + 8]
add edx, edi
add ecx, eax
add ecx, 0xd1
sub ecx, edx
add cl, 0xeb
mov byte [esi + eax + 0x74], cl
add eax, 1
jmp 0x415b2a
mov eax, dword [esi + 0x74]
mov eax, dword [eax + 0x14]
sub esp, 4
mov dword [esp], eax
call fcn.0040d0f0
add esp, 4
call fcn.0040d100
and eax, 0xf
add eax, 0x10
xor edx, edx
lea edi, [esi + 0x2a8]
cmp edx, eax
setb cl
test cl, 1
jne 0x415d58
jmp 0x415bae
mov word [edi], 0
mov eax, dword [esi + 0x23c]
mov al, byte [eax]
mov byte [esi + 0xf8], al
mov byte [esi + 0x5c], 0xcf
mov byte [esi + 0x5d], 0xeb
mov byte [esi + 0x5e], 0x3e
mov byte [esi + 0x5f], 0xe9
mov byte [esi + 0x60], 0x23
mov byte [esi + 0x61], 0xef
mov byte [esi + 0x62], 0x3d
mov byte [esi + 0x63], 0xed
mov byte [esi + 0x64], 0x3c
mov byte [esi + 0x65], 0xf3
mov byte [esi + 0x66], 0xd9
mov byte [esi + 0x67], 0xf1
mov byte [esi + 0x68], 0x2c
mov byte [esi + 0x69], 0xf7
mov byte [esi + 0x6a], 0xf6
mov byte [esi + 0x6b], 0xf5
mov eax, 0x10
mov byte [esi + eax + 0x5c], 0
add eax, 1
cmp eax, 0x14
jne 0x415c06
xor eax, eax
cmp eax, 0x14
jae 0x415c56
movzx edx, byte [esi + eax + 0x5c]
mov edi, eax
shl edi, 1
and edi, 0xbd521c4e
mov ecx, eax
xor ecx, 0x5ea90e27
add ecx, edi
xor ecx, edx
mov edi, ecx
shl edi, 1
and edi, 0x78
mov edx, ecx
xor edx, 0x3c
add edx, edi
shl ecx, 1
and ecx, 2
xor edx, 1
add edx, ecx
mov byte [esi + eax + 0x5c], dl
add eax, 1
jmp 0x415c15
lea eax, [esi + 0x248]
lea ecx, [esi + 0x5c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0040e340
add esp, 8
lea ecx, [esi + 0x2a8]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0040e340
add esp, 8
lea ecx, [esi + 0x248]
xor ecx, 0xffffffff
add eax, ecx
add eax, 1
sar eax, 1
xor ecx, ecx
lea ecx, [esi + 0x248]
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], ecx
mov dword [esi + 0x1dc], eax
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov edi, dword [esi + 0x17c]
mov dword [esp + 0x14], edi
call dword [0x44ac34]
mov eax, dword [edi]
sub eax, 0xfffffffc
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x415cf4
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.0040c9f0
add esp, 4
mov ecx, dword [0x44ac34]
mov dword [esi + 0x1ac], ecx
mov edi, dword [esi + 0x17c]
mov ecx, dword [edi]
xor edx, edx
lea edx, [esi + 0x248]
sub esp, 0x18
mov dword [esp], 0
mov dword [esp + 4], edx
mov edx, dword [esi + 0x1dc]
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 dword [esi + 0x1ac]
mov eax, dword [esi + 0x34]
cmp eax, 0
je 0x415da2
jmp 0x415e6b
mov dword [esi + 0x1d0], eax
mov dword [esi + 0x1d8], edx
call fcn.0040d100
mov ecx, 0x24
cdq
idiv ecx
mov al, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
movsx ecx, al
mov eax, edi
mov edi, eax
add edi, 2
mov edx, dword [esi + 0x1d8]
mov word [eax], cx
mov ecx, edx
and ecx, 1
shl ecx, 1
xor edx, 1
add edx, ecx
mov eax, dword [esi + 0x1d0]
jmp 0x415b9e
mov ecx, dword [esi + 0x58]
mov eax, dword [esi + 0x238]
mov al, byte [eax]
mov byte [esi + 0xfc], al
mov byte [ecx], 0x9a
mov byte [ecx + 1], 0x49
mov byte [ecx + 2], 0xab
mov byte [ecx + 3], 0x4f
mov byte [ecx + 4], 0xc4
mov byte [ecx + 5], 0x4d
mov byte [ecx + 6], 0xa7
mov byte [ecx + 7], 0x43
mov byte [ecx + 8], 0x40
mov byte [ecx + 9], 0x41
mov eax, 0xa
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 0xd
jne 0x415ddf
xor ebx, ebx
cmp ebx, 0xd
jae 0x415e4e
movzx edx, byte [ecx + ebx]
mov ecx, edx
and ecx, 0x72
xor ecx, 0x72
mov edi, edx
add edi, 1
xor edx, 0xffffffff
or edx, 0x8d
add edx, edi
mov edi, 0x6d
sub edi, ebx
and edi, 0x72
mov eax, ebx
add eax, 0x93
mov dword [esi + 0x1a4], eax
mov eax, 0x6d
sub eax, ebx
or eax, 0x8d
add eax, dword [esi + 0x1a4]
or ecx, edx
or edi, eax
xor ecx, edi
add cl, 0x26
mov eax, dword [esi + 0x58]
mov byte [eax + ebx], cl
mov ecx, dword [esi + 0x58]
add ebx, 1
jmp 0x415ded
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00417690
add esp, 8
mov ebx, dword [esi + 8]
jmp 0x416005
cmp eax, 1
jne 0x415f6e
mov eax, dword [esi + 0x234]
mov al, byte [eax]
mov byte [esi + 0x100], al
mov ecx, dword [esi + 0x178]
mov byte [ecx], 0xd6
mov byte [ecx + 1], 0xbb
mov byte [ecx + 2], 0xde
mov byte [ecx + 3], 0xb9
mov byte [ecx + 4], 0x24
mov byte [ecx + 5], 0xbf
mov byte [ecx + 6], 0x22
mov byte [ecx + 7], 0xbd
mov byte [ecx + 8], 0xbc
mov byte [ecx + 9], 0xb3
mov eax, 0xa
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 0xf
jne 0x415eb4
xor edx, edx
mov eax, ecx
cmp edx, 0xf
jae 0x415f51
movzx ebx, byte [eax + edx]
mov dword [esi + 0x1d4], ebx
mov ecx, edx
add ecx, 0xefdab99f
mov eax, 0x254660
sub eax, edx
and eax, 0x72c6c60
mov edi, ecx
and edi, 0xf8d3939f
or eax, edi
xor eax, ebx
mov edi, 0x10254660
sub edi, edx
xor eax, 0x72c6c60
or eax, edi
mov edi, eax
xor edi, 0xffffffff
mov ebx, eax
and ebx, 2
and eax, 0xfffffffd
xor eax, 0xfffffffd
imul eax, ebx
mov ebx, edi
and ebx, 2
or edi, 2
imul edi, ebx
add edi, eax
mov eax, edi
xor eax, 0xffffffff
and ecx, eax
mov eax, 0x60
sub eax, edx
and edi, eax
mov eax, dword [esi + 0x178]
add ecx, dword [esi + 0x1d4]
sub ecx, edi
add cl, 0xe5
mov byte [eax + edx], cl
add edx, 1
jmp 0x415ec4
sub esp, 8
mov ecx, dword [esi + 4]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00417690
add esp, 8
mov ebx, dword [esi + 8]
jmp 0x416005
cmp eax, 2
mov ecx, dword [esi + 0x3c]
jne 0x416005
mov eax, dword [esi + 0x230]
mov al, byte [eax]
mov byte [esi + 0x104], al
mov byte [ecx], 0xb2
mov byte [ecx + 1], 0x67
mov byte [ecx + 2], 0xf6
mov byte [ecx + 3], 0x61
mov byte [ecx + 4], 0xed
mov byte [ecx + 5], 0x63
mov byte [ecx + 6], 0xb1
mov byte [ecx + 7], 0x5d
mov byte [ecx + 8], 0x5c
mov byte [ecx + 9], 0x5f
mov eax, 0xa
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 0xc
jne 0x415fb4
xor eax, eax
cmp eax, 0xc
jae 0x415fee
mov ecx, dword [esi + 0x3c]
mov cl, byte [ecx + eax]
mov dl, al
add dl, 0x19
xor dl, cl
add dl, 0x83
mov ecx, dword [esi + 0x3c]
mov byte [ecx + eax], dl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov ecx, dword [esi + 0x3c]
jmp 0x415fc2
sub esp, 8
mov eax, dword [esi + 4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00417690
add esp, 8
jmp 0x416005
mov ecx, dword [esi + 4]
jmp 0x41600a
jmp 0x41600c
xor eax, eax
sub esp, 0x1c
mov dword [esi + 4], ecx
mov dword [esp], ecx
mov eax, dword [esi + 0x174]
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.0043ea90
add esp, 0x1c
mov edi, eax
cmp edi, 0
jl 0x4161d4
mov eax, dword [esi + 0x18c]
mov ecx, dword [esi + 0x18]
mov ebx, dword [esi + 0x174]
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.0043f2c0
add esp, 0x10
mov ecx, dword [ebx]
mov dword [esi + 0x1fc], ecx
mov cl, byte [esi + 0xcc]
mov byte [esi + 0x130], cl
mov byte [esi + 0xd0], 0x5f
mov byte [esi + 0xd1], 0x5e
mov byte [esi + 0xd2], 0x5d
mov byte [esi + 0xd3], 0x5c
mov ecx, 4
mov byte [esi + ecx + 0xd0], 0
add ecx, 1
cmp ecx, 7
jne 0x4160c2
mov dword [esi + 0x200], eax
xor eax, eax
cmp eax, 7
jae 0x41614b
movzx edx, byte [esi + eax + 0xd0]
mov dword [esi + 0x1b0], edx
mov ecx, eax
add ecx, 0xe04e5b70
mov edi, ecx
and edi, edx
mov edx, edi
and edx, 0xfd
mov ebx, edi
and ebx, 2
xor ebx, 2
imul ebx, edx
mov edx, edi
and edx, 2
or edi, 2
imul edi, edx
add edi, ebx
add ecx, dword [esi + 0x1b0]
sub ecx, edi
mov edx, ecx
shl edx, 1
and edx, 0x9e
xor ecx, 0xcf
add ecx, edx
add cl, 1
mov byte [esi + eax + 0xd0], cl
mov ecx, eax
xor ecx, 1
shl eax, 1
and eax, 2
add eax, ecx
jmp 0x4160da
mov eax, dword [esi + 0xd0]
mov dword [esi + 0x1e8], eax
xor edx, edx
mov ebx, dword [esi + 8]
cmp edx, dword [0x44ac38]
jb 0x416166
jmp 0x4161ce
mov eax, dword [0x44ac3c]
cmp dword [eax + edx*8], 0xb62b8d10
sete cl
mov byte [esi + 0x23], cl
test cl, 1
jne 0x41617f
jmp 0x4161c1
mov eax, dword [eax + edx*8 + 4]
cmp eax, dword [esi + 0x1e8]
je 0x4161c1
mov ecx, dword [0x44ac40]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 1
mov eax, dword [esi + 0x1fc]
mov dword [esp + 0xc], eax
mov dword [esi + 0x1e0], edx
call fcn.0043b650
mov edx, dword [esi + 0x1e0]
add esp, 0x10
test byte [esi + 0x23], 1
je 0x4161c9
jmp 0x4161ce
add edx, 1
jmp 0x41615c
mov edi, dword [esi + 0x200]
mov eax, dword [esi + 0x18]
sub esp, 4
mov dword [esp], eax
call fcn.00438790
add esp, 4
mov dword [esi + 0x18], 0
cmp edi, 0
jge 0x41620b
mov ecx, dword [esi + 4]
mov edx, dword [esi + 0x34]
mov edi, dword [esi + 0xc]
mov dword [esi + 0x10], 0
mov eax, 4
jmp 0x416813
mov ecx, dword [esi + 4]
mov edx, dword [esi + 0x34]
cmp edx, 1
sete al
mov edi, dword [esi + 0x170]
test al, 1
jne 0x416226
jmp 0x4165a6
mov eax, dword [esi + 0x22c]
mov al, byte [eax]
mov byte [esi + 0x108], al
mov byte [edi], 0xa2
mov byte [edi + 1], 0xbb
mov byte [edi + 2], 0x56
mov eax, 3
mov byte [edi + eax], 0
add eax, 1
cmp eax, 7
jne 0x416244
xor eax, eax
cmp eax, 7
jae 0x4162b0
movzx ecx, byte [edi + eax]
mov edx, 0x71
sub edx, eax
mov edi, 0x71
sub edi, eax
mov ebx, 0x71
sub ebx, eax
or edi, ebx
mov ebx, dword [esi + 8]
and edi, edx
xor edi, 0xffffffff
mov edx, ecx
and edx, edi
xor ecx, 0xffffffff
mov edi, 0x9eaee071
sub edi, eax
and edi, ecx
or edx, edi
mov edi, dword [esi + 0x170]
mov ecx, edx
shl ecx, 1
xor ecx, 0xffffffff
add edx, ecx
add dl, 0x3a
mov byte [edi + eax], dl
mov ecx, eax
and ecx, 1
or ecx, 0x10
or eax, 0xfffffff1
add eax, ecx
jmp 0x416252
sub esp, 8
mov eax, dword [esi + 0x14]
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.00404700
add esp, 8
mov dword [esi + 0x44], eax
mov eax, dword [esi + 0x224]
mov al, byte [eax]
mov byte [esi + 0x10c], al
mov edi, dword [esi + 0x228]
mov byte [edi], 0x73
mov byte [edi + 1], 0x85
mov byte [edi + 2], 0xa
mov eax, 3
mov byte [edi + eax], 0
add eax, 1
cmp eax, 7
jne 0x4162ec
xor eax, eax
cmp eax, 7
jae 0x416327
movzx edx, byte [edi + eax]
mov ecx, eax
add ecx, 0x5a4dff03
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, 0xf0
add ecx, edx
mov byte [edi + eax], cl
add eax, 1
jmp 0x4162fa
sub esp, 8
mov eax, dword [esi + 0x14]
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.00404700
add esp, 8
mov dword [esi + 0x40], eax
sub esp, 4
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.004176e0
add esp, 4
mov edi, eax
cmp dword [esi + 0x44], 0
setne cl
xor eax, eax
mov byte [esi + 0x26], cl
test cl, 1
jne 0x416365
jmp 0x416389
sub esp, 4
mov eax, dword [esi + 0x44]
mov dword [esp], eax
call fcn.0040cb00
add esp, 4
jmp 0x416378
sub eax, 0xf5a3d1b5
add eax, 1
add eax, 0xf5a3d1b5
jmp 0x416387
jmp 0x416389
cmp dword [esi + 0x40], 0
setne cl
xor edx, edx
mov byte [esi + 0x25], cl
test cl, 1
mov dword [esi + 0x164], eax
jne 0x4163a2
jmp 0x4163cd
sub esp, 4
mov eax, dword [esi + 0x40]
mov dword [esp], eax
call fcn.0040cb00
add esp, 4
mov edx, eax
jmp 0x4163b7
mov eax, dword [esi + 0x164]
mov ecx, edx
and ecx, 1
shl ecx, 1
xor edx, 1
add edx, ecx
jmp 0x4163cb
jmp 0x4163cd
add edi, 9
xor ecx, ecx
sub ecx, eax
sub edi, ecx
mov dword [esi + 0x160], edx
xor edx, 0xffffffff
sub edx, 0xffffffff
sub edi, edx
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4163ff
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.0040c9f0
add esp, 4
mov dword [esi + 0x10], eax
mov eax, dword [esi + 0x220]
mov al, byte [eax]
mov byte [esi + 0x110], al
mov ecx, dword [esi + 0x54]
mov byte [ecx], 0xa2
mov byte [ecx + 1], 0x11
mov byte [ecx + 2], 0x9f
mov byte [ecx + 3], 0x13
mov byte [ecx + 4], 0x5a
mov byte [ecx + 5], 0xed
mov byte [ecx + 6], 0x52
mov byte [ecx + 7], 0xef
mov byte [ecx + 8], 0x5c
mov byte [ecx + 9], 0xe9
mov byte [ecx + 0xa], 0x5e
mov byte [ecx + 0xb], 0xeb
mov byte [ecx + 0xc], 0x17
mov byte [ecx + 0xd], 0xe5
mov byte [ecx + 0xe], 0x14
mov byte [ecx + 0xf], 0xe7
mov byte [ecx + 0x10], 0xe0
mov byte [ecx + 0x11], 0xe1
mov eax, 0x12
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 0x15
jne 0x41646d
xor eax, eax
cmp eax, 0x15
jae 0x4164bd
movzx edx, byte [ecx + eax]
mov ecx, 0x51915203
sub ecx, eax
or ecx, edx
mov edi, eax
add edi, 0xfc
xor edx, 0xffffffff
or edi, edx
and edi, ecx
mov ecx, 0x97d69a12
sub ecx, edi
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov edx, dword [esi + 0x54]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x54]
add eax, 1
jmp 0x41647b
sub esp, 8
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0040e340
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 eax, dword [esi + 4]
mov dword [esp + 4], eax
call fcn.0040e340
add esp, 8
mov edi, eax
add edi, 2
mov word [eax], 0x22
sub esp, 4
mov eax, dword [esi + 4]
mov dword [esp], eax
call fcn.0040ca00
add esp, 4
test byte [esi + 0x26], 1
mov ecx, dword [esi + 0x164]
jne 0x416529
mov edx, dword [esi + 0x160]
jmp 0x416565
mov ebx, edi
add ebx, 2
mov word [edi], 0x2c
xor eax, eax
sub esp, 0x10
mov dword [esp], ebx
mov dword [esp + 4], ecx
mov eax, dword [esi + 0x44]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ed20
add esp, 0x10
shl eax, 1
add ebx, eax
mov edi, ebx
mov ebx, dword [esi + 8]
mov edx, dword [esi + 0x160]
test byte [esi + 0x25], 1
jne 0x41656d
jmp 0x41659a
mov eax, edi
add eax, 2
mov word [edi], 0x2c
xor ecx, ecx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], edx
mov eax, dword [esi + 0x40]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ed20
add esp, 0x10
xor ecx, ecx
xor edx, edx
mov edi, dword [esi + 0xc]
jmp 0x41680f
mov dword [esi + 0x10], 0
cmp edx, 2
je 0x4165ba
mov edi, dword [esi + 0xc]
jmp 0x41680f
mov edi, dword [esi + 0xc]
sub esp, 4
mov dword [esp], ecx
call fcn.004176e0
add esp, 4
add eax, 0x1d
add eax, 1
mov ecx, 2
mul ecx
seto dl
jmp 0x4165dd
mov ecx, 0xffffffff
test dl, 1
jne 0x4165e9
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.0040c9f0
add esp, 4
mov dword [esi + 0x10], eax
mov eax, dword [esi + 0x21c]
mov al, byte [eax]
mov byte [esi + 0x114], al
mov ecx, dword [esi + 0x38]
mov byte [ecx], 0x72
mov byte [ecx + 1], 0x91
mov byte [ecx + 2], 0x92
mov byte [ecx + 3], 0x93
mov eax, 4
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 7
jne 0x41661f
xor eax, eax
cmp eax, 7
jae 0x416666
mov ecx, dword [esi + 0x38]
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0x6b21d264
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x16
xor ecx, 0xb
add ecx, edx
add cl, 1
mov edx, dword [esi + 0x38]
mov byte [edx + eax], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x41662d
mov eax, dword [esi + 0x218]
mov al, byte [eax]
mov byte [esi + 0x118], al
mov ecx, dword [esi + 0x50]
mov byte [ecx], 0x58
mov byte [ecx + 1], 0xc9
mov byte [ecx + 2], 0x5d
mov byte [ecx + 3], 0xcf
mov byte [ecx + 4], 0x47
mov byte [ecx + 5], 0xcd
mov byte [ecx + 6], 0xa7
mov byte [ecx + 7], 0xc3
mov byte [ecx + 8], 0x56
mov byte [ecx + 9], 0xc1
mov byte [ecx + 0xa], 0x51
mov byte [ecx + 0xb], 0xc7
mov byte [ecx + 0xc], 0x5c
mov byte [ecx + 0xd], 0xc5
mov byte [ecx + 0xe], 0x9f
mov byte [ecx + 0xf], 0xfb
mov byte [ecx + 0x10], 0x64
mov byte [ecx + 0x11], 0xf9
mov byte [ecx + 0x12], 0x62
mov byte [ecx + 0x13], 0xff
mov byte [ecx + 0x14], 0xdc
mov byte [ecx + 0x15], 0xfd
mov byte [ecx + 0x16], 0xaf
mov byte [ecx + 0x17], 0xf3
mov byte [ecx + 0x18], 0x95
mov byte [ecx + 0x19], 0xf1
mov byte [ecx + 0x1a], 0x7e
mov byte [ecx + 0x1b], 0xf7
mov byte [ecx + 0x1c], 0x91
mov byte [ecx + 0x1d], 0xf5
mov byte [ecx + 0x1e], 0x8d
mov byte [ecx + 0x1f], 0xeb
mov byte [ecx + 0x20], 0xc8
mov byte [ecx + 0x21], 0xe9
mov byte [ecx + 0x22], 0x88
mov byte [ecx + 0x23], 0xef
mov byte [ecx + 0x24], 0x65
mov byte [ecx + 0x25], 0xed
mov byte [ecx + 0x26], 0x72
mov byte [ecx + 0x27], 0xe3
mov byte [ecx + 0x28], 0x81
mov byte [ecx + 0x29], 0xe1
mov byte [ecx + 0x2a], 0x71
mov byte [ecx + 0x2b], 0xe7
mov byte [ecx + 0x2c], 0x73
mov byte [ecx + 0x2d], 0xe5
mov byte [ecx + 0x2e], 0x3a
mov byte [ecx + 0x2f], 0x1b
mov byte [ecx + 0x30], 0x45
mov byte [ecx + 0x31], 0x19
mov byte [ecx + 0x32], 0x84
mov byte [ecx + 0x33], 0x1f
mov byte [ecx + 0x34], 0x3c
mov byte [ecx + 0x35], 0x1d
mov byte [ecx + 0x36], 0x34
mov byte [ecx + 0x37], 0x13
mov byte [ecx + 0x38], 0x10
mov byte [ecx + 0x39], 0x11
mov eax, 0x3a
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 0x40
jne 0x416763
xor eax, eax
cmp eax, 0x40
jae 0x4167d1
mov ecx, dword [esi + 0x50]
movzx ecx, byte [ecx + eax]
mov edx, eax
and edx, 0x42770950
mov ebx, eax
and ebx, 0x42770950
mov edi, eax
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, eax
and ebx, 2
or edx, 2
imul edx, ebx
add edx, edi
mov edi, dword [esi + 0xc]
mov ebx, eax
xor ebx, 0x42770952
add ebx, edx
xor ebx, ecx
add ebx, 0xa99f61e6
mov ecx, ebx
xor ecx, 0x80
shl ebx, 1
sub ebx, ecx
mov ecx, dword [esi + 0x50]
mov byte [ecx + eax], bl
add eax, 1
jmp 0x416771
sub esp, 8
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0040e340
mov dword [esp], eax
mov eax, dword [esi + 4]
mov dword [esp + 4], eax
call fcn.0040e340
mov dword [esp], eax
mov eax, dword [esi + 0x38]
mov dword [esp + 4], eax
call fcn.0040e340
add esp, 8
mov ebx, dword [esi + 8]
mov edx, 2
mov ecx, dword [esi + 4]
xor eax, eax
jmp 0x416813
cmp eax, 0
sete al
test al, 1
jne 0x416a94
jmp 0x417295
cmp edi, 1
sete al
cmp edx, 2
sete cl
and al, cl
mov edi, dword [esi + 0xc]
mov dword [esi + 0x10], 0
test al, 1
mov ecx, 0
jne 0x41684c
jmp 0x416a94
mov eax, dword [esi + 0x18]
sub esp, 4
mov dword [esp], eax
call fcn.004172b0
add esp, 4
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41687a
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.0040c9f0
add esp, 4
mov ebx, eax
mov eax, dword [esi + 0x18]
xor ecx, ecx
sub esp, 0x10
mov dword [esp], ebx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ed20
add esp, 0x10
mov eax, dword [esi + 0x18c]
xor ecx, ecx
sub ecx, eax
mov eax, 0x18
sub eax, ecx
mov ecx, eax
and ecx, 1
shl ecx, 1
xor eax, 1
add eax, ecx
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4168e0
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.0040c9f0
add esp, 4
mov dword [esi + 0x10], eax
mov eax, dword [esi + 0x214]
mov al, byte [eax]
mov byte [esi + 0x11c], al
mov ecx, dword [esi + 0x4c]
mov byte [ecx], 0x94
mov byte [ecx + 1], 0x27
mov byte [ecx + 2], 0x97
mov byte [ecx + 3], 0x21
mov byte [ecx + 4], 0xa9
mov byte [ecx + 5], 0x23
mov byte [ecx + 6], 0x9d
mov byte [ecx + 7], 0x3d
mov byte [ecx + 8], 0x8e
mov byte [ecx + 9], 0x3f
mov byte [ecx + 0xa], 0xb3
mov byte [ecx + 0xb], 0x39
mov byte [ecx + 0xc], 0x80
mov byte [ecx + 0xd], 0x3b
mov byte [ecx + 0xe], 0x85
mov byte [ecx + 0xf], 0x35
mov byte [ecx + 0x10], 0x80
mov byte [ecx + 0x11], 0x37
mov byte [ecx + 0x12], 0x82
mov byte [ecx + 0x13], 0x31
mov byte [ecx + 0x14], 0x50
mov byte [ecx + 0x15], 0x33
mov byte [ecx + 0x16], 0x45
mov byte [ecx + 0x17], 0xd
mov byte [ecx + 0x18], 0xb3
mov byte [ecx + 0x19], 0xf
mov byte [ecx + 0x1a], 0x86
mov byte [ecx + 0x1b], 9
mov byte [ecx + 0x1c], 0xb7
mov byte [ecx + 0x1d], 0xb
mov byte [ecx + 0x1e], 0xb7
mov byte [ecx + 0x1f], 5
mov byte [ecx + 0x20], 0x64
mov byte [ecx + 0x21], 7
mov byte [ecx + 0x22], 0xa4
mov byte [ecx + 0x23], 1
mov byte [ecx + 0x24], 0x8b
mov byte [ecx + 0x25], 3
mov byte [ecx + 0x26], 0xb2
mov byte [ecx + 0x27], 0x1d
mov byte [ecx + 0x28], 0xbf
mov byte [ecx + 0x29], 0x1f
mov byte [ecx + 0x2a], 0x93
mov byte [ecx + 0x2b], 0x19
mov byte [ecx + 0x2c], 0x95
mov byte [ecx + 0x2d], 0x1b
mov byte [ecx + 0x2e], 0x7a
mov byte [ecx + 0x2f], 0x15
mov byte [ecx + 0x30], 0x14
mov byte [ecx + 0x31], 0x17
mov eax, 0x32
mov byte [ecx + eax], 0
add eax, 1
cmp eax, 0x37
jne 0x4169ce
xor eax, eax
cmp eax, 0x37
jae 0x416a54
movzx edx, byte [ecx + eax]
mov edi, eax
shl edi, 1
and edi, 0x6fc78812
mov ecx, eax
xor ecx, 0xb7e3c409
add ecx, edi
xor ecx, edx
mov edi, ecx
add edi, 0x688d2bd3
mov edx, 0x9772d42d
sub edx, ecx
or edx, 1
add edx, edi
mov dword [esi + 0x208], ebx
mov ebx, edx
and ebx, 0xfd
mov edi, edx
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, edx
and ebx, 2
or edx, 2
imul edx, ebx
mov ebx, dword [esi + 0x208]
add edx, edi
xor ecx, 1
add ecx, 0xd2
add ecx, edx
mov edx, dword [esi + 0x4c]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x4c]
add eax, 1
jmp 0x4169dc
sub esp, 8
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0040e340
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.0040e340
add esp, 8
mov eax, ebx
mov ebx, dword [esi + 8]
mov edi, dword [esi + 0xc]
sub esp, 4
mov dword [esp], eax
call fcn.0040ca00
add esp, 4
xor ecx, ecx
mov edx, 2
jmp 0x416a94
test edx, edx
mov dword [esi + 4], ecx
je 0x416ab8
jmp 0x416a9d
mov eax, edx
sub eax, 1
je 0x416c8a
jmp 0x416aaa
sub edx, 2
je 0x416f63
jmp 0x417248
test byte [esi + 0x27], 1
jne 0x416ac3
jmp 0x416c8a
xor eax, eax
mov ecx, 0x11
mov ebx, dword [esi + 0x210]
mov edi, ebx
rep stosd dword es:[edi], eax
mov dword [ebx], 0x44
mov eax, dword [0x44ac2c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x38c42730
call fcn.0043e240
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 + 0x10]
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], ebx
mov ecx, dword [esi + 0x16c]
mov dword [esp + 0x24], ecx
call eax
cmp eax, 0
je 0x416c7f
mov eax, dword [esi + 0x16c]
mov eax, dword [eax]
mov dword [esi + 0x1f0], eax
mov al, byte [esi + 0xc0]
mov byte [esi + 0x134], al
mov byte [esi + 0xc4], 0x5f
mov byte [esi + 0xc5], 0x5e
mov byte [esi + 0xc6], 0x5d
mov byte [esi + 0xc7], 0x5c
mov eax, 4
mov byte [esi + eax + 0xc4], 0
add eax, 1
cmp eax, 7
jne 0x416b90
xor eax, eax
cmp eax, 7
jae 0x416c13
movzx edx, byte [esi + eax + 0xc4]
mov dword [esi + 0x1b4], edx
mov ecx, eax
add ecx, 0xe04e5b70
mov edi, ecx
and edi, edx
mov edx, edi
and edx, 0xfd
mov ebx, edi
and ebx, 2
xor ebx, 2
imul ebx, edx
mov edx, edi
and edx, 2
or edi, 2
imul edi, edx
add edi, ebx
add ecx, dword [esi + 0x1b4]
sub ecx, edi
mov edx, ecx
shl edx, 1
and edx, 0x9e
xor ecx, 0xcf
add ecx, edx
add cl, 1
mov byte [esi + eax + 0xc4], cl
mov ecx, eax
xor ecx, 1
shl eax, 1
and eax, 2
add eax, ecx
jmp 0x416ba2
mov ebx, dword [esi + 0xc4]
xor edi, edi
cmp edi, dword [0x44ac38]
jb 0x416c25
jmp 0x416c7f
mov eax, dword [0x44ac3c]
cmp dword [eax + edi*8], 0xb62b8d10
sete cl
test cl, 1
jne 0x416c3b
jmp 0x416c73
mov eax, dword [eax + edi*8 + 4]
cmp eax, ebx
je 0x416c73
mov byte [esi + 0x1f], cl
mov ecx, dword [0x44ac40]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 1
mov eax, dword [esi + 0x1f0]
mov dword [esp + 0xc], eax
call fcn.0043b650
mov cl, byte [esi + 0x1f]
add esp, 0x10
test cl, 1
je 0x416c7a
jmp 0x416c7f
add edi, 1
jmp 0x416c1b
mov ebx, dword [esi + 8]
mov edi, dword [esi + 0xc]
jmp 0x417248
mov eax, dword [0x44ac2c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0xe117db1e
call fcn.0043e240
add esp, 8
test eax, eax
setne cl
mov ecx, dword [esi + 0x18]
xor edx, edx
lea edx, [0x4214c0]
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 + 0x180], eax
cmp eax, 0
je 0x416f5e
mov eax, dword [esi + 0x168]
mov dword [eax + 4], 0xffffffff
mov dword [eax], 0xdc3cba00
mov al, byte [esi + 0x120]
mov byte [esi + 0x12c], al
mov byte [esi + 0x124], 0x5f
mov byte [esi + 0x125], 0x5e
mov byte [esi + 0x126], 0x5d
mov byte [esi + 0x127], 0x5c
mov eax, 4
mov byte [esi + eax + 0x124], 0
add eax, 1
cmp eax, 7
jne 0x416d30
xor ecx, ecx
cmp ecx, 7
jae 0x416db2
movzx edi, byte [esi + ecx + 0x124]
mov dword [esi + 0x1b8], edi
mov edx, ecx
add edx, 0xe04e5b70
mov eax, edx
and eax, edi
mov edi, eax
and edi, 0xfd
mov ebx, eax
and ebx, 2
xor ebx, 2
imul ebx, edi
mov edi, eax
and edi, 2
or eax, 2
imul eax, edi
add eax, ebx
add edx, dword [esi + 0x1b8]
sub edx, eax
mov eax, edx
shl eax, 1
and eax, 0x9e
xor edx, 0xcf
add edx, eax
add dl, 1
mov byte [esi + ecx + 0x124], dl
mov eax, ecx
xor eax, 1
shl ecx, 1
and ecx, 2
add ecx, eax
jmp 0x416d42
mov ebx, dword [esi + 0x124]
xor edi, edi
cmp edi, dword [0x44ac38]
jb 0x416dc4
jmp 0x416e32
mov eax, dword [0x44ac3c]
cmp dword [eax + edi*8], 0x4e66b5a3
sete cl
test cl, 1
jne 0x416dda
jmp 0x416e26
mov eax, dword [eax + edi*8 + 4]
cmp eax, ebx
je 0x416e26
mov byte [esi + 0x24], cl
mov ecx, dword [0x44ac40]
xor edx, edx
sub esp, 0x18
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
mov eax, dword [esi + 0x180]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0x168]
mov dword [esp + 0x14], eax
call fcn.0043b650
mov cl, byte [esi + 0x24]
add esp, 0x18
test cl, 1
je 0x416e2d
jmp 0x416e32
add edi, 1
jmp 0x416dba
mov al, byte [esi + 0xb4]
mov byte [esi + 0x138], al
mov byte [esi + 0xb8], 0x5f
mov byte [esi + 0xb9], 0x5e
mov byte [esi + 0xba], 0x5d
mov byte [esi + 0xbb], 0x5c
mov eax, 4
mov byte [esi + eax + 0xb8], 0
add eax, 1
cmp eax, 7
jne 0x416e5f
xor edi, edi
cmp edi, 7
jae 0x416ee0
movzx eax, byte [esi + edi + 0xb8]
mov dword [esi + 0x1bc], eax
mov ecx, edi
add ecx, 0xe04e5b70
mov edx, ecx
and edx, eax
mov eax, edx
and eax, 0xfd
mov ebx, edx
and ebx, 2
xor ebx, 2
imul ebx, eax
mov eax, edx
and eax, 2
or edx, 2
imul edx, eax
add edx, ebx
add ecx, dword [esi + 0x1bc]
sub ecx, edx
mov eax, ecx
shl eax, 1
and eax, 0x9e
xor ecx, 0xcf
add ecx, eax
add cl, 1
mov byte [esi + edi + 0xb8], cl
mov eax, edi
xor eax, 1
shl edi, 1
and edi, 2
add edi, eax
jmp 0x416e71
mov ecx, dword [esi + 0xb8]
xor edi, edi
mov ebx, dword [esi + 8]
cmp edi, dword [0x44ac38]
jb 0x416ef5
jmp 0x416f5b
mov eax, dword [0x44ac3c]
cmp dword [eax + edi*8], 0xb62b8d10
sete dl
test dl, 1
jne 0x416f0b
jmp 0x416f4f
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x416f4f
mov dword [esi + 0x1e4], ecx
mov ecx, dword [0x44ac40]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 1
mov eax, dword [esi + 0x180]
mov dword [esp + 0xc], eax
mov byte [esi + 0x20], dl
call fcn.0043b650
mov dl, byte [esi + 0x20]
mov ecx, dword [esi + 0x1e4]
add esp, 0x10
test dl, 1
je 0x416f56
jmp 0x416f5b
add edi, 1
jmp 0x416eeb
mov edi, dword [esi + 0xc]
jmp 0x417248
xor eax, eax
mov ecx, 0x11
mov ebx, dword [esi + 0x20c]
mov edi, ebx
rep stosd dword es:[edi], eax
mov dword [ebx], 0x44
mov eax, dword [0x44ac2c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x38c42730
call fcn.0043e240
add esp, 8
test eax, eax
setne cl
xor ecx, ecx
sub esp, 0x28
mov dword [esp], 0
mov ecx, dword [esi + 0x10]
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], ebx
mov ecx, dword [esi + 0x48]
mov dword [esp + 0x24], ecx
call eax
cmp eax, 0
je 0x417242
mov eax, dword [esi + 0x48]
mov eax, dword [eax + 4]
mov dword [esi + 0x1f8], eax
mov al, byte [esi + 0xa8]
mov byte [esi + 0x13c], al
mov byte [esi + 0xac], 0x5f
mov byte [esi + 0xad], 0x5e
mov byte [esi + 0xae], 0x5d
mov byte [esi + 0xaf], 0x5c
mov eax, 4
mov byte [esi + eax + 0xac], 0
add eax, 1
cmp eax, 7
jne 0x41702c
xor eax, eax
cmp eax, 7
jae 0x4170af
movzx edx, byte [esi + eax + 0xac]
mov dword [esi + 0x1c0], edx
mov ecx, eax
add ecx, 0xe04e5b70
mov edi, ecx
and edi, edx
mov edx, edi
and edx, 0xfd
mov ebx, edi
and ebx, 2
xor ebx, 2
imul ebx, edx
mov edx, edi
and edx, 2
or edi, 2
imul edi, edx
add edi, ebx
add ecx, dword [esi + 0x1c0]
sub ecx, edi
mov edx, ecx
shl edx, 1
and edx, 0x9e
xor ecx, 0xcf
add ecx, edx
add cl, 1
mov byte [esi + eax + 0xac], cl
mov ecx, eax
xor ecx, 1
shl eax, 1
and eax, 2
add eax, ecx
jmp 0x41703e
mov ebx, dword [esi + 0xac]
xor edi, edi
cmp edi, dword [0x44ac38]
jb 0x4170c1
jmp 0x41711b
mov eax, dword [0x44ac3c]
cmp dword [eax + edi*8], 0xb62b8d10
sete cl
test cl, 1
jne 0x4170d7
jmp 0x41710f
mov eax, dword [eax + edi*8 + 4]
cmp eax, ebx
je 0x41710f
mov byte [esi + 0x22], cl
mov ecx, dword [0x44ac40]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 1
mov eax, dword [esi + 0x1f8]
mov dword [esp + 0xc], eax
call fcn.0043b650
mov cl, byte [esi + 0x22]
add esp, 0x10
test cl, 1
je 0x417116
jmp 0x41711b
add edi, 1
jmp 0x4170b7
mov eax, dword [esi + 0x48]
mov eax, dword [eax]
mov dword [esi + 0x1f4], eax
mov al, byte [esi + 0x9c]
mov byte [esi + 0x140], al
mov byte [esi + 0xa0], 0x5f
mov byte [esi + 0xa1], 0x5e
mov byte [esi + 0xa2], 0x5d
mov byte [esi + 0xa3], 0x5c
mov eax, 4
mov byte [esi + eax + 0xa0], 0
add eax, 1
cmp eax, 7
jne 0x417153
xor eax, eax
cmp eax, 7
jae 0x4171d6
movzx edx, byte [esi + eax + 0xa0]
mov dword [esi + 0x1c4], edx
mov ecx, eax
add ecx, 0xe04e5b70
mov edi, ecx
and edi, edx
mov edx, edi
and edx, 0xfd
mov ebx, edi
and ebx, 2
xor ebx, 2
imul ebx, edx
mov edx, edi
and edx, 2
or edi, 2
imul edi, edx
add edi, ebx
add ecx, dword [esi + 0x1c4]
sub ecx, edi
mov edx, ecx
shl edx, 1
and edx, 0x9e
xor ecx, 0xcf
add ecx, edx
add cl, 1
mov byte [esi + eax + 0xa0], cl
mov ecx, eax
xor ecx, 1
shl eax, 1
and eax, 2
add eax, ecx
jmp 0x417165
mov ebx, dword [esi + 0xa0]
xor edi, edi
cmp edi, dword [0x44ac38]
jb 0x4171e8
jmp 0x417242
mov eax, dword [0x44ac3c]
cmp dword [eax + edi*8], 0xb62b8d10
sete cl
test cl, 1
jne 0x4171fe
jmp 0x417236
mov eax, dword [eax + edi*8 + 4]
cmp eax, ebx
je 0x417236
mov byte [esi + 0x21], cl
mov ecx, dword [0x44ac40]
sub esp, 0x10
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 1
mov eax, dword [esi + 0x1f4]
mov dword [esp + 0xc], eax
call fcn.0043b650
mov cl, byte [esi + 0x21]
add esp, 0x10
test cl, 1
je 0x41723d
jmp 0x417242
add edi, 1
jmp 0x4171de
mov ebx, dword [esi + 8]
mov edi, dword [esi + 0xc]
mov eax, dword [esi + 0x18]
sub esp, 4
mov dword [esp], eax
call fcn.00438790
add esp, 4
mov eax, dword [esi + 4]
cmp eax, 0
je 0x417273
sub esp, 4
mov dword [esp], eax
call fcn.0040ca00
add esp, 4
jmp 0x417271
jmp 0x417273
cmp dword [esi + 0x10], 0
sete al
jmp 0x41727c
test al, 1
jne 0x417293
jmp 0x417282
sub esp, 4
mov eax, dword [esi + 0x10]
mov dword [esp], eax
call fcn.0040ca00
add esp, 4
jmp 0x417295
sub edi, 0xffffffff
jmp 0x415426
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret