Function at 0x41017d
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x428
mov esi, esp
call fcn.00414a30
push eax
mov edx, esp
push eax
mov ecx, esp
push eax
mov edi, esp
push eax
mov dword [esi + 0x408], esp
push eax
mov dword [esi + 0x140], esp
push eax
mov dword [esi + 0x404], esp
push eax
mov dword [esi + 0xa8], esp
push eax
mov dword [esi + 0x400], esp
push eax
mov dword [esi + 0xa4], esp
push eax
mov dword [esi + 0x3fc], esp
push eax
mov dword [esi + 0x13c], esp
push eax
mov dword [esi + 0x3f8], esp
push eax
mov dword [esi + 0x138], esp
push eax
mov dword [esi + 0x3f4], esp
push eax
mov dword [esi + 0xa0], esp
push eax
mov dword [esi + 0x3f0], esp
push eax
mov dword [esi + 0x9c], esp
push eax
mov dword [esi + 0x3ec], esp
push eax
mov dword [esi + 0x134], esp
push eax
mov dword [esi + 0x3e8], esp
push eax
mov dword [esi + 0x98], esp
push eax
mov dword [esi + 0x3e4], esp
push eax
mov dword [esi + 0x130], esp
push eax
mov dword [esi + 0x3e0], esp
push eax
mov dword [esi + 0x12c], esp
push eax
mov dword [esi + 0x3dc], esp
push eax
mov dword [esi + 0x94], esp
push eax
mov dword [esi + 0x3d8], esp
push eax
mov dword [esi + 0x128], esp
push eax
mov dword [esi + 0x3d4], esp
push eax
mov dword [esi + 0x124], esp
push eax
mov dword [esi + 0x90], esp
push eax
mov dword [esi + 0x3d0], esp
sub esp, 0x88
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x120], eax
mov esp, eax
push eax
mov dword [esi + 0x11c], esp
push eax
mov dword [esi + 0x3cc], esp
push eax
mov dword [esi + 0x118], esp
push eax
mov dword [esi + 0x3c8], esp
push eax
mov dword [esi + 0x8c], esp
push eax
mov dword [esi + 0x3c4], esp
push eax
mov dword [esi + 0x88], esp
push eax
mov dword [esi + 0x3c0], esp
push eax
mov dword [esi + 0x84], esp
push eax
mov dword [esi + 0x3bc], esp
push eax
mov dword [esi + 0x80], esp
push eax
mov dword [esi + 0x3b8], esp
push eax
mov dword [esi + 0x114], esp
push eax
mov dword [esi + 0x3b4], esp
push eax
mov dword [esi + 0x110], esp
push eax
mov dword [esi + 0x3b0], esp
push eax
mov dword [esi + 0x7c], esp
push eax
mov dword [esi + 0x3ac], esp
push eax
mov dword [esi + 0x10c], esp
push eax
mov dword [esi + 0x3a8], esp
push eax
mov dword [esi + 0x108], esp
push eax
mov dword [esi + 0x3a4], esp
push eax
mov dword [esi + 0x78], esp
push eax
mov dword [esi + 0x3a0], esp
sub esp, 0x10
mov dword [esi + 0x74], esp
push eax
mov dword [esi + 0x104], esp
push eax
mov dword [esi + 0x100], esp
push eax
mov dword [esi + 0x39c], esp
sub esp, 0x88
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xfc], eax
mov esp, eax
push eax
mov dword [esi + 0x70], esp
push eax
mov dword [esi + 0x398], esp
push eax
mov dword [esi + 0xf8], esp
push eax
mov dword [esi + 0x394], esp
push eax
mov dword [esi + 0x6c], esp
push eax
mov dword [esi + 0x390], esp
push eax
mov dword [esi + 0xf4], esp
push eax
mov dword [esi + 0x68], esp
push eax
mov dword [esi + 0x38c], esp
push eax
mov dword [esi + 0xf0], esp
push eax
mov dword [esi + 0x388], esp
push eax
mov dword [esi + 0x64], esp
push eax
mov dword [esi + 0x384], esp
push eax
mov dword [esi + 0x60], esp
push eax
mov dword [esi + 0x380], esp
push eax
mov dword [esi + 0x5c], esp
push eax
mov dword [esi + 0x37c], esp
push eax
mov dword [esi + 0xec], esp
push eax
mov dword [esi + 0x378], esp
push eax
mov dword [esi + 0xe8], esp
push eax
mov dword [esi + 0x374], esp
push eax
mov dword [esi + 0x58], esp
push eax
mov dword [esi + 0x370], esp
sub esp, 0x14
mov dword [esi + 0x36c], esp
sub esp, 0x88
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x2b4], eax
mov esp, eax
push eax
mov dword [esi + 0xe4], esp
push eax
mov dword [esi + 0x368], esp
push eax
mov dword [esi + 0xe0], esp
push eax
mov dword [esi + 0x364], esp
push eax
mov dword [esi + 0xdc], esp
push eax
mov dword [esi + 0xd8], esp
push eax
mov dword [esi + 0x360], esp
push eax
mov dword [esi + 0x54], esp
push eax
mov dword [esi + 0x35c], esp
push eax
mov dword [esi + 0x50], esp
push eax
mov dword [esi + 0x358], esp
push eax
mov dword [esi + 0x4c], esp
push eax
mov dword [esi + 0x354], esp
push eax
mov dword [esi + 0xd4], esp
push eax
mov dword [esi + 0x350], esp
sub esp, 0x14
mov dword [esi + 0x34c], esp
sub esp, 0x88
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x2b0], eax
mov esp, eax
push eax
mov dword [esi + 0xd0], esp
push eax
mov dword [esi + 0x348], esp
push eax
mov dword [esi + 0xcc], esp
push eax
mov dword [esi + 0x344], esp
push eax
mov dword [esi + 0xc8], esp
push eax
mov dword [esi + 0x340], esp
push eax
mov dword [esi + 0x2ac], esp
sub esp, 0x88
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x2a8], eax
mov esp, eax
mov cl, byte [ecx]
mov byte [esi + 0x148], cl
mov byte [edx], 0x84
mov byte [edx + 1], 0x18
xor ecx, ecx
mov dword [esi + 0x144], edi
cmp ecx, 2
jae 0x40f43f
mov eax, edx
movzx edx, byte [eax + ecx]
mov ebx, ecx
add ebx, 0x9ebda0df
mov edi, 0x61425f20
sub edi, ecx
and edi, 0x441e959d
and ebx, 0xbbe16a62
xor edx, 0x441e959d
or edi, ebx
mov ebx, edx
and ebx, edi
shl ebx, 1
add edx, edi
sub edx, ebx
mov edi, edx
add edi, 0xa12f907
mov ebx, edi
and ebx, 1
and edi, 1
xor edi, 0xffffffff
add edx, 9
add edx, edi
add ebx, edx
mov edx, eax
mov byte [edx + ecx], bl
add ecx, 1
jmp 0x40f3e3
sub esp, 8
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], edx
call fcn.00401a70
add esp, 8
mov ebx, eax
cmp ebx, 0
sete al
test al, 1
jne 0x40f462
jmp 0x40f469
xor eax, eax
jmp 0x41265f
xor edi, edi
jmp 0x40f46d
sub esp, 4
mov dword [esp], ebx
call fcn.00401f20
add esp, 4
cmp edi, eax
jb 0x40f486
mov al, 1
jmp 0x41265f
sub esp, 8
mov dword [esp], ebx
mov dword [esp + 4], edi
call fcn.00401f30
add esp, 8
mov dword [esi], eax
mov eax, dword [esi + 0x408]
mov al, byte [eax]
mov byte [esi + 0x14c], al
mov eax, dword [esi + 0x144]
mov byte [eax], 0x8a
mov byte [eax + 1], 0x1f
xor eax, eax
mov dword [esi + 4], edi
mov dword [esi + 8], ebx
cmp eax, 2
jae 0x40f4f2
mov ebx, dword [esi + 0x144]
mov dl, byte [ebx + eax]
mov edi, eax
xor edi, 0x92
mov ecx, eax
shl ecx, 1
and ecx, 0xda
sub ecx, edi
mov edi, dword [esi + 4]
xor cl, dl
add cl, 0x90
mov byte [ebx + eax], cl
mov ebx, dword [esi + 8]
add eax, 1
jmp 0x40f4bd
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x144]
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e20
add esp, 0xc
cmp eax, 0
setne al
xor al, 0xff
test al, 1
jne 0x40f522
jmp 0x40f527
jmp 0x41264b
mov eax, dword [esi + 0x404]
mov al, byte [eax]
mov byte [esi + 0x150], al
mov eax, dword [esi + 0x140]
mov byte [eax], 0xd6
mov byte [eax + 1], 0x43
xor eax, eax
cmp eax, 2
jae 0x40f588
mov ebx, dword [esi + 0x140]
movzx edx, byte [ebx + eax]
mov ecx, eax
add ecx, 0x93531ad2
mov edi, ecx
and edi, edx
shl edi, 1
sub ecx, edi
mov edi, dword [esi + 4]
add ecx, edx
add ecx, 0x18bc54b5
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
add cl, 0xba
mov byte [ebx + eax], cl
mov ebx, dword [esi + 8]
add eax, 1
jmp 0x40f544
sub esp, 8
mov eax, dword [esi + 0x140]
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
call fcn.00401960
add esp, 8
fnstcw word [esi + 0x36]
movzx eax, word [esi + 0x36]
or eax, 0xc00
mov word [esi + 0x226], ax
fldcw word [esi + 0x226]
fistp dword [esi + 0x41c]
fldcw word [esi + 0x36]
mov eax, dword [esi + 0x41c]
mov ecx, eax
sub ecx, 4
ja 0x412649
mov eax, dword [eax*4 + 0x440588]
jmp eax
mov eax, dword [esi + 0x400]
mov al, byte [eax]
mov byte [esi + 0x154], al
mov eax, dword [esi + 0xa8]
mov byte [eax], 0x6b
mov byte [eax + 1], 0xfc
xor eax, eax
cmp eax, 2
jae 0x40f642
mov ecx, dword [esi + 0xa8]
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0xe3
mov edi, edx
xor edi, 0xffffffff
and ecx, edi
mov edi, ebx
mov ebx, 0x1c
sub ebx, eax
and ebx, edx
or ebx, ecx
add bl, 0xe8
mov ecx, dword [esi + 0xa8]
mov byte [ecx + eax], bl
mov ebx, edi
mov edi, dword [esi + 4]
mov ecx, eax
shl ecx, 1
or eax, ecx
xor eax, 1
jmp 0x40f5fb
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0xa8]
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e20
add esp, 0xc
cmp eax, 0
setne al
test al, 1
jne 0x40f673
jmp 0x40f981
mov eax, dword [esi + 0x3fc]
mov al, byte [eax]
mov byte [esi + 0x158], al
mov eax, dword [esi + 0xa4]
mov byte [eax], 0
mov byte [eax + 1], 6
mov byte [eax + 2], 7
mov byte [eax + 3], 0x18
xor eax, eax
cmp eax, 4
jae 0x40f6fe
mov ecx, dword [esi + 0xa4]
movzx ecx, byte [ecx + eax]
mov edx, eax
add edx, 0xd637c16d
mov edi, edx
and edi, ecx
shl edi, 1
sub edx, edi
add edx, ecx
mov ecx, edx
add ecx, 0x4e41f497
mov edi, ecx
and edi, 1
mov ebx, 0xb1be0b68
sub ebx, edx
mov edx, ebx
and edx, 0x70
and ecx, 0x8f
or edx, ecx
xor edx, 0x71
and ebx, 1
xor ebx, 1
or edx, ebx
add edx, edi
mov ecx, dword [esi + 0xa4]
mov byte [ecx + eax], dl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40f698
mov eax, dword [esi + 0xa4]
mov eax, dword [eax]
mov dword [esi + 0x2ec], eax
mov eax, dword [esi + 0x3f8]
mov cl, byte [eax]
mov byte [esi + 0x15c], cl
mov eax, dword [esi + 0x13c]
mov byte [eax], 0x9f
mov byte [eax + 1], 0xf3
xor ecx, ecx
cmp ecx, 2
jae 0x40f759
mov eax, dword [esi + 0x13c]
movzx edi, byte [eax + ecx]
mov edx, ecx
add edx, 0xe2
mov ebx, ecx
add ebx, 0xe2
and ebx, edi
or edx, edi
sub edx, ebx
add dl, 0xf0
mov byte [eax + ecx], dl
add ecx, 1
jmp 0x40f729
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x13c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x2ec]
mov dword [esp + 8], eax
call fcn.00401e20
add esp, 0xc
mov ebx, dword [esi + 8]
mov edi, dword [esi + 4]
cmp eax, 0
je 0x40f981
mov eax, dword [esi + 0x3f4]
mov al, byte [eax]
mov byte [esi + 0x160], al
mov eax, dword [esi + 0x138]
mov byte [eax], 0xad
mov byte [eax + 1], 0x18
xor eax, eax
cmp eax, 2
jae 0x40f7eb
mov edi, dword [esi + 0x138]
movzx edx, byte [edi + eax]
mov ecx, eax
add ecx, 0xacc021df
xor ecx, edx
mov edx, ecx
add edx, 0x99fef107
mov ebx, edx
shl ebx, 1
and ebx, 2
shl edx, 1
and edx, 2
add ecx, 8
sub ecx, edx
add ecx, ebx
mov ebx, dword [esi + 8]
mov byte [edi + eax], cl
mov edi, dword [esi + 4]
add eax, 1
jmp 0x40f7a9
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x138]
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e20
add esp, 0xc
cmp eax, 0
je 0x40f981
mov eax, dword [esi + 0x3f0]
mov al, byte [eax]
mov byte [esi + 0x164], al
mov eax, dword [esi + 0xa0]
mov byte [eax], 0x69
mov byte [eax + 1], 0xce
xor eax, eax
cmp eax, 2
jae 0x40f880
mov ecx, dword [esi + 0xa0]
movzx ecx, byte [ecx + eax]
mov ebx, eax
add ebx, 0x9f81f1e5
xor ebx, ecx
mov ecx, ebx
and ecx, 1
xor ecx, 1
mov edx, 0x28
sub edx, ebx
mov edi, 0x28
sub edi, ebx
mov ebx, dword [esi + 8]
or edx, edi
mov edi, dword [esi + 4]
xor edx, 0xffffffff
or edx, 1
add edx, ecx
mov ecx, dword [esi + 0xa0]
mov byte [ecx + eax], dl
add eax, 1
jmp 0x40f833
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0xa0]
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e20
add esp, 0xc
cmp eax, 0
setne al
test al, 1
jne 0x40f8b1
jmp 0x40f981
mov eax, dword [esi + 0x3ec]
mov al, byte [eax]
mov byte [esi + 0x168], al
mov eax, dword [esi + 0x9c]
mov byte [eax], 0x1d
mov byte [eax + 1], 0xef
mov byte [eax + 2], 0x7d
xor eax, eax
cmp eax, 3
jae 0x40f93d
mov ecx, dword [esi + 0x9c]
mov cl, byte [ecx + eax]
movzx edx, cl
mov ebx, eax
add ebx, 0xa4341863
xor ebx, edx
xor ebx, 0xffffffff
mov edi, eax
add edi, 0xa4341864
mov edx, 0x5bcbe79c
sub edx, eax
or edx, ebx
add edx, edi
mov edi, edx
and edi, 0xfd
mov ebx, edx
and ebx, 2
xor ebx, 2
imul ebx, edi
mov edi, edx
and edi, 2
or edx, 2
imul edx, edi
add edx, ebx
mov ebx, eax
sub ebx, edx
add bl, 0x62
add bl, cl
add bl, 0xe9
mov ecx, dword [esi + 0x9c]
mov byte [ecx + eax], bl
add eax, 1
jmp 0x40f8d2
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x9c]
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e20
add esp, 0xc
cmp eax, 0
setne al
or al, al
xor al, 0xff
xor al, 0xff
and al, 1
or al, 0
xor al, 0xff
test al, 1
mov ebx, dword [esi + 8]
mov edi, dword [esi + 4]
jne 0x412649
jmp 0x40f986
jmp 0x412649
mov eax, dword [esi + 0x3e8]
mov al, byte [eax]
mov byte [esi + 0x16c], al
mov eax, dword [esi + 0x134]
mov byte [eax], 0xa0
mov byte [eax + 1], 0xd1
xor eax, eax
cmp eax, 2
jae 0x40f9e0
mov edi, dword [esi + 0x134]
mov bl, byte [edi + eax]
mov edx, 0x2f
sub edx, eax
and edx, 0x34
mov ecx, 0xaf
sub ecx, eax
and ecx, 0xcb
or ecx, edx
xor cl, bl
mov dl, 0x7f
sub dl, cl
mov byte [edi + eax], dl
mov ecx, eax
shl ecx, 1
or ecx, 1
sub ecx, eax
mov eax, ecx
jmp 0x40f9a3
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x134]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0x288], eax
mov eax, dword [esi + 0x3e4]
mov al, byte [eax]
mov byte [esi + 0x170], al
mov eax, dword [esi + 0x98]
mov byte [eax], 0x5c
mov byte [eax + 1], 0xa2
xor ecx, ecx
cmp ecx, 2
jae 0x40fad6
mov eax, dword [esi + 0x98]
movzx edx, byte [eax + ecx]
mov dword [esi + 0xb0], ecx
mov ecx, dword [esi + 0xb0]
add ecx, 0x699148e9
mov eax, ecx
and eax, edx
shl eax, 1
mov edi, ecx
sub edi, eax
add edi, edx
mov ebx, 0x966eb716
sub ebx, dword [esi + 0xb0]
or ebx, edi
mov eax, ebx
xor eax, 0xffffffff
mov edi, ebx
and edi, 2
and ebx, 0xfffffffd
xor ebx, 0xfffffffd
imul ebx, edi
mov edi, eax
and edi, 2
or eax, 2
imul eax, edi
add eax, ebx
add eax, 0x505641f9
sub ecx, eax
add ecx, edx
mov edx, ecx
add edx, 0xf9
mov edi, 6
sub edi, ecx
or edi, 0x48
mov ebx, 0xafa9be06
sub ebx, ecx
mov ecx, dword [esi + 0xb0]
mov eax, ebx
and eax, 0x49
and edx, 0xb6
or eax, edx
xor eax, 0xfe
and ebx, 0xb7
xor ebx, 0xb7
or eax, ebx
sub eax, edi
mov edx, dword [esi + 0x98]
mov byte [edx + ecx], al
add ecx, 1
jmp 0x40fa1d
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x98]
mov dword [esp + 4], eax
call fcn.00401a70
add esp, 8
mov dword [esi + 0x290], eax
mov eax, dword [esi + 0x3e0]
mov al, byte [eax]
mov byte [esi + 0x174], al
mov eax, dword [esi + 0x130]
mov byte [eax], 0x70
mov byte [eax + 1], 0xeb
xor eax, eax
cmp eax, 2
jae 0x40fb4b
mov ebx, dword [esi + 0x130]
movzx edx, byte [ebx + eax]
mov edi, eax
shl edi, 1
and edi, 0x2b76f274
mov ecx, eax
xor ecx, 0x15bb793a
add ecx, edi
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
add cl, 0x30
mov byte [ebx + eax], cl
add eax, 1
jmp 0x40fb13
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x130]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0x28c], eax
mov eax, dword [esi + 0x3dc]
mov al, byte [eax]
mov byte [esi + 0x178], al
mov eax, dword [esi + 0x12c]
mov byte [eax], 0xd9
mov byte [eax + 1], 0x7e
xor eax, eax
cmp eax, 2
jae 0x40fbc0
mov ebx, dword [esi + 0x12c]
mov dl, byte [ebx + eax]
mov edi, eax
add edi, 0xd5
mov ecx, 0x2a
sub ecx, eax
and ecx, 0x21
and edi, 0xde
or ecx, edi
xor cl, dl
xor cl, 0x21
add cl, 0x58
mov byte [ebx + eax], cl
add eax, 1
jmp 0x40fb88
sub esp, 8
mov eax, dword [esi + 0x12c]
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
call fcn.00401960
add esp, 8
fnstcw word [esi + 0x34]
movzx eax, word [esi + 0x34]
or eax, 0xc00
mov word [esi + 0x224], ax
fldcw word [esi + 0x224]
fistp dword [esi + 0x410]
fldcw word [esi + 0x34]
mov eax, dword [esi + 0x410]
mov dword [esi + 0x330], eax
mov eax, dword [esi + 0x3d8]
mov al, byte [eax]
mov byte [esi + 0x17c], al
mov eax, dword [esi + 0x94]
mov byte [eax], 0xfe
mov byte [eax + 1], 0xea
mov byte [eax + 2], 0x1a
xor eax, eax
cmp eax, 3
jae 0x40fc8a
mov ecx, dword [esi + 0x94]
movzx edi, byte [ecx + eax]
mov edx, eax
add edx, 0x6aa843d8
mov ecx, edi
xor ecx, 0xffffffff
and edx, ecx
mov ecx, 0x27
sub ecx, eax
and ecx, edi
or ecx, edx
mov edx, ecx
and edx, 0x3d
mov ebx, ecx
and ebx, 2
xor ebx, 2
mov edi, ecx
and edi, 0x3d
imul ebx, edi
mov edi, ecx
and edi, 2
or edx, 2
imul edx, edi
add edx, ebx
xor ecx, 0x3f
add edx, ecx
add dl, 1
mov ecx, dword [esi + 0x94]
mov byte [ecx + eax], dl
add eax, 1
jmp 0x40fc29
sub esp, 8
mov eax, dword [esi + 0x94]
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
call fcn.00401960
add esp, 8
fnstcw word [esi + 0x32]
movzx eax, word [esi + 0x32]
or eax, 0xc00
mov word [esi + 0x222], ax
fldcw word [esi + 0x222]
fistp dword [esi + 0x40c]
fldcw word [esi + 0x32]
mov eax, dword [esi + 0x40c]
mov dword [esi + 0x32c], eax
mov eax, dword [esi + 0x3d4]
mov al, byte [eax]
mov byte [esi + 0x180], al
mov eax, dword [esi + 0x128]
mov byte [eax], 0xa1
mov byte [eax + 1], 0x64
mov byte [eax + 2], 0xf9
xor eax, eax
cmp eax, 3
jae 0x40fd2e
mov ebx, dword [esi + 0x128]
mov dl, byte [ebx + eax]
mov edi, eax
add edi, 0xf
xor ecx, ecx
sub ecx, eax
and ecx, 0xf3
and edi, 0xc
or ecx, edi
xor cl, dl
xor cl, 0xf3
add cl, 8
mov byte [ebx + eax], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40fcf3
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x128]
mov dword [esp + 4], eax
call fcn.00401b70
add esp, 8
cmp eax, 0
setg byte [esi + 0x11]
sub esp, 4
mov eax, dword [esi + 0x288]
mov dword [esp], eax
call fcn.004145b0
add esp, 4
mov dword [esi + 0x264], eax
add eax, 1
mov ecx, 2
mov dword [esi + 0x2cc], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
mov edi, dword [esi + 4]
jne 0x40fd8b
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
mov ebx, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], ebx
mov eax, dword [esi + 0x2cc]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x288]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a6d0
add esp, 0x10
xor eax, eax
sub esp, 0x18
mov dword [esp], 0
mov dword [esi + 0x3c], ebx
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x264]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0x124]
mov dword [esp + 0x14], eax
call dword [0x449658]
mov dword [esi + 0x304], eax
mov eax, dword [esi + 0x3d0]
mov al, byte [eax]
mov byte [esi + 0x184], al
mov eax, dword [esi + 0x90]
mov byte [eax], 0x32
mov byte [eax + 1], 0x12
mov byte [eax + 2], 0x13
mov byte [eax + 3], 0x54
xor ecx, ecx
cmp ecx, 4
jae 0x40feaf
mov eax, dword [esi + 0x90]
movzx edi, byte [eax + ecx]
mov dword [esi + 0x2c8], edi
mov edx, 0x1487df26
sub edx, ecx
and edx, 0x1b439d2f
mov ebx, 0x1487df26
sub ebx, ecx
mov eax, 0x1487df26
sub eax, ecx
and ebx, eax
and ebx, 0xe4bc62d0
or ebx, edx
mov edx, edi
xor edx, 0xd0
mov eax, edi
xor eax, 0xd0
or edx, eax
mov eax, ebx
xor eax, 0x2f
mov edi, ebx
xor edi, 0x2f
or eax, edi
mov edi, dword [esi + 4]
xor ebx, 0xd0
and edx, ebx
mov ebx, dword [esi + 0x2c8]
xor ebx, 0x2f
and eax, ebx
or edx, eax
add dl, 0x38
mov eax, dword [esi + 0x90]
mov byte [eax + ecx], dl
add ecx, 1
jmp 0x40fe2f
mov eax, dword [esi + 0x90]
mov eax, dword [eax]
cmp dword [esi + 0x304], eax
mov ebx, dword [esi + 8]
je 0x40feda
jmp 0x40fec4
sub esp, 4
mov eax, dword [esi + 0x3c]
mov dword [esp], eax
call fcn.00408000
add esp, 4
jmp 0x410178
mov eax, dword [esi + 0x124]
mov eax, dword [eax]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40fef8
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
mov ecx, dword [0x449658]
mov dword [esi + 0x2bc], ecx
mov edi, dword [esi + 0x124]
mov ecx, dword [edi]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov edx, dword [esi + 0x3c]
mov dword [esp + 4], edx
mov edx, dword [esi + 0x264]
mov dword [esp + 8], edx
mov dword [esi + 0x278], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edi
call dword [esi + 0x2bc]
cmp eax, 0
jge 0x40ff6f
mov edi, dword [esi + 4]
jmp 0x40ff59
sub esp, 4
mov eax, dword [esi + 0x3c]
mov dword [esp], eax
call fcn.00408000
add esp, 4
jmp 0x410176
jmp 0x40ff71
sub esp, 4
mov eax, dword [esi + 0x3c]
mov dword [esp], eax
call fcn.00408000
add esp, 4
sub esp, 4
mov eax, dword [esi + 0x28c]
mov dword [esp], eax
call fcn.004145b0
add esp, 4
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 0x40ffba
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x260], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x28c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a6d0
add esp, 0xc
mov ecx, dword [esi + 0x120]
mov dword [esp], 1
call fcn.00408bc0
xor edi, edi
mov ebx, dword [esi + 8]
jmp 0x41000d
sub esp, 4
mov eax, dword [esi + 0x290]
mov dword [esp], eax
call fcn.00401f20
add esp, 4
cmp edi, eax
jb 0x41002a
jmp 0x410135
sub esp, 8
mov eax, dword [esi + 0x290]
mov dword [esp], eax
mov dword [esi + 0x24c], edi
mov dword [esp + 4], edi
call fcn.00401f00
add esp, 4
mov dword [esp], eax
call fcn.00401940
add esp, 4
mov edi, eax
cmp edi, 0
sete al
test al, 1
jne 0x410061
jmp 0x41006c
mov edi, dword [esi + 0x24c]
jmp 0x41012d
sub esp, 4
mov dword [esp], edi
call fcn.004145b0
add esp, 4
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410097
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov edi, eax
mov dword [esp + 0xc], 0
call fcn.0040a6d0
sub esp, 0xc
mov eax, dword [esi + 0x330]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x32c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edi
mov eax, dword [esi + 0x278]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x260]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x120]
mov dword [esp], eax
xor eax, eax
mov cl, byte [esi + 0x11]
mov al, cl
and eax, 1
mov dword [esp + 0x18], eax
call fcn.00421270
add esp, 0x1c
sub esp, 4
mov dword [esp], edi
call fcn.00408000
add esp, 4
jmp 0x410122
mov ebx, dword [esi + 8]
mov edi, dword [esi + 0x24c]
jmp 0x41012d
add edi, 1
jmp 0x41000d
sub esp, 4
mov eax, dword [esi + 0x260]
mov dword [esp], eax
call fcn.00408000
add esp, 4
jmp 0x41014b
sub esp, 4
mov eax, dword [esi + 0x278]
mov dword [esp], eax
call fcn.00408000
add esp, 4
mov edi, dword [esi + 0x120]
mov ecx, edi
call fcn.004097b0
mov ecx, edi
call fcn.00408cb0
mov edi, dword [esi + 4]
jmp 0x410178
jmp 0x412649
mov eax, dword [esi + 0x3cc]
mov al, byte [eax]
mov byte [esi + 0x188], al
mov eax, dword [esi + 0x11c]
mov byte [eax], 0xbd
mov byte [eax + 1], 0x5b
xor eax, eax
cmp eax, 2
jae 0x4101d1
mov edi, dword [esi + 0x11c]
movzx edx, byte [edi + eax]
mov ecx, eax
add ecx, 0x3515cb0a
xor ecx, edx
mov edx, ecx
add edx, 0xaf
and ecx, 1
xor ecx, 1
or edx, 1
add ecx, edx
mov byte [edi + eax], cl
mov edi, dword [esi + 4]
add eax, 1
jmp 0x41019a
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x11c]
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e20
add esp, 0xc
cmp eax, 0
je 0x41055d
mov eax, dword [esi + 0x3c8]
mov al, byte [eax]
mov byte [esi + 0x18c], al
mov eax, dword [esi + 0x118]
mov byte [eax], 0xe
mov byte [eax + 1], 0x9f
xor eax, eax
cmp eax, 2
jae 0x410250
mov ebx, dword [esi + 0x118]
movzx edx, byte [ebx + eax]
mov ecx, 0x11
sub ecx, eax
and ecx, edx
mov edi, 0x11
sub edi, eax
or edi, edx
xor edi, 0xffffffff
or ecx, edi
mov edi, dword [esi + 4]
add cl, 0x90
mov byte [ebx + eax], cl
mov ebx, dword [esi + 8]
add eax, 1
jmp 0x410219
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x118]
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e20
add esp, 0xc
cmp eax, 0
je 0x41055d
mov eax, dword [esi + 0x3c4]
mov al, byte [eax]
mov byte [esi + 0x190], al
mov eax, dword [esi + 0x8c]
mov byte [eax], 0xa0
mov byte [eax + 1], 0x1e
xor eax, eax
cmp eax, 2
jae 0x4102eb
mov ecx, dword [esi + 0x8c]
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0x48af6db5
xor ecx, edx
mov edi, ecx
shl edi, 1
and edi, 0xae
mov ebx, ecx
xor ebx, 0xba849257
mov edx, ebx
add edx, edi
mov edi, dword [esi + 4]
and ebx, 1
xor edx, 1
and ecx, 1
xor ecx, 1
or edx, ecx
add edx, ebx
mov ebx, dword [esi + 8]
mov ecx, dword [esi + 0x8c]
mov byte [ecx + eax], dl
add eax, 1
jmp 0x410298
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x8c]
mov dword [esp + 4], eax
mov dword [esp + 8], 5
call fcn.00401e20
add esp, 0xc
cmp eax, 0
je 0x41055d
mov eax, dword [esi + 0x3c0]
mov al, byte [eax]
mov byte [esi + 0x194], al
mov eax, dword [esi + 0x88]
mov byte [eax], 0xa4
mov byte [eax + 1], 0x3f
xor edx, edx
cmp edx, 2
jae 0x4103a0
mov eax, dword [esi + 0x88]
movzx eax, byte [eax + edx]
mov dword [esi + 0x228], eax
mov eax, edx
and eax, 0x95924e
mov ebx, edx
and ebx, 0xff6a6db1
xor ebx, 0xff6a6db1
mov ecx, edx
and ecx, 0xff6a6db1
xor ecx, 0xff6a6db1
or ebx, ecx
mov edi, ebx
xor edi, 0xffffffff
mov ecx, eax
add ecx, edi
mov edi, dword [esi + 4]
or ecx, dword [esi + 0x228]
xor ebx, 0xffffffff
add eax, ebx
mov ebx, dword [esi + 8]
and eax, dword [esi + 0x228]
sub ecx, eax
add cl, 0x90
mov eax, dword [esi + 0x88]
mov byte [eax + edx], cl
add edx, 1
jmp 0x410333
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x88]
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e20
add esp, 0xc
cmp eax, 0
je 0x41055d
mov eax, dword [esi + 0x3bc]
mov al, byte [eax]
mov byte [esi + 0x198], al
mov eax, dword [esi + 0x84]
mov byte [eax], 0xc6
mov byte [eax + 1], 0xa3
xor ecx, ecx
cmp ecx, 2
jae 0x410464
mov eax, dword [esi + 0x84]
movzx edi, byte [eax + ecx]
mov ebx, ecx
and ebx, 0xdc7a5032
mov eax, ecx
and eax, 0x2385afcd
xor eax, 0x2385afcd
mov dword [esi + 0x234], ecx
mov ecx, dword [esi + 0x234]
and ecx, 0x2385afcd
xor ecx, 0x2385afcd
or ecx, eax
mov eax, ebx
shl eax, 1
or ecx, ebx
mov edx, ecx
xor edx, 0xffffffff
mov ebx, eax
add ebx, edx
mov edx, edi
xor edx, 0xffffffff
and ebx, edx
mov edx, ecx
sub edx, eax
sub ecx, eax
or edx, ecx
mov ecx, dword [esi + 0x234]
and edx, edi
or edx, ebx
mov ebx, dword [esi + 8]
add dl, 0x70
mov eax, dword [esi + 0x84]
mov byte [eax + ecx], dl
mov edi, dword [esi + 4]
add ecx, 1
jmp 0x4103e8
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x84]
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e20
add esp, 0xc
cmp eax, 0
je 0x41055d
mov eax, dword [esi + 0x3b8]
mov al, byte [eax]
mov byte [esi + 0x19c], al
mov eax, dword [esi + 0x80]
mov byte [eax], 0x3d
mov byte [eax + 1], 0xcf
mov byte [eax + 2], 0x5d
xor ecx, ecx
cmp ecx, 3
jae 0x410524
mov eax, dword [esi + 0x80]
movzx eax, byte [eax + ecx]
mov dword [esi + 0xac], ecx
mov ecx, dword [esi + 0xac]
add ecx, 0x70d56e43
mov edx, ecx
and edx, eax
shl edx, 1
add ecx, eax
mov edi, ecx
sub edi, edx
mov eax, edi
add eax, 0xe7
and ecx, 1
xor ecx, 1
mov ebx, 0x86ab7218
sub ebx, edi
mov edx, ebx
and edx, 0x2f
and eax, 0xd0
or edx, eax
and ebx, 1
xor ebx, 1
or edx, ebx
xor edx, 0x2e
add ecx, edx
mov eax, dword [esi + 0xac]
mov edx, dword [esi + 0x80]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0xac]
add ecx, 1
jmp 0x4104b0
sub esp, 0xc
mov eax, dword [esi + 0x80]
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
mov dword [esp + 8], 3
call fcn.00401e20
add esp, 0xc
sub eax, 1
mov al, 1
sbb al, 0xff
test al, 1
mov ebx, dword [esi + 8]
mov edi, dword [esi + 4]
jne 0x412649
jmp 0x410562
jmp 0x412649
mov eax, dword [esi + 0x3b4]
mov al, byte [eax]
mov byte [esi + 0x1a0], al
mov eax, dword [esi + 0x114]
mov byte [eax], 0xeb
mov byte [eax + 1], 0x4d
xor eax, eax
cmp eax, 2
jae 0x4105c3
mov ebx, dword [esi + 0x114]
movzx edx, byte [ebx + eax]
mov ecx, eax
add ecx, 0xdaff442c
mov edi, ecx
and edi, edx
shl edi, 1
sub ecx, edi
add ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x3e
mov edi, ecx
shl edi, 1
and edi, 0x3e
add ecx, 0x9f
add ecx, edx
sub ecx, edi
add cl, 1
mov byte [ebx + eax], cl
add eax, 1
jmp 0x41057f
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x114]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0x280], eax
mov eax, dword [esi + 0x3b0]
mov al, byte [eax]
mov byte [esi + 0x1a4], al
mov eax, dword [esi + 0x110]
mov byte [eax], 0xc5
mov byte [eax + 1], 0x76
xor eax, eax
cmp eax, 2
jae 0x410630
mov edi, dword [esi + 0x110]
movzx edx, byte [edi + eax]
mov ecx, eax
add ecx, 0xf35a3e9d
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x2e
xor ecx, 0x17
add ecx, edx
add cl, 1
mov byte [edi + eax], cl
add eax, 1
jmp 0x410600
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x110]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0x294], eax
mov eax, dword [esi + 0x3ac]
mov al, byte [eax]
mov byte [esi + 0x1a8], al
mov eax, dword [esi + 0x7c]
mov byte [eax], 0x1f
mov byte [eax + 1], 0x73
xor eax, eax
cmp eax, 2
jae 0x4106d0
mov ecx, dword [esi + 0x7c]
movzx edx, byte [ecx + eax]
mov edi, eax
shl edi, 1
and edi, 0x182ef6c4
mov ecx, eax
xor ecx, 0x8c177b62
add ecx, edi
xor ecx, edx
mov edx, ecx
and edx, 0xed
mov ebx, ecx
and ebx, 2
xor ebx, 2
mov edi, ecx
and edi, 0xed
imul edi, ebx
mov ebx, ecx
and ebx, 2
or edx, 2
imul edx, ebx
add edx, edi
xor ecx, 0xef
add ecx, edx
add cl, 1
mov edx, dword [esi + 0x7c]
mov byte [edx + eax], cl
mov ecx, eax
shl ecx, 1
or eax, ecx
xor eax, 1
jmp 0x41066a
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x7c]
mov dword [esp + 4], eax
call fcn.00401a70
add esp, 8
mov dword [esi + 0x33c], eax
mov eax, dword [esi + 0x3a8]
mov al, byte [eax]
mov byte [esi + 0x1ac], al
mov eax, dword [esi + 0x10c]
mov byte [eax], 0xfa
mov byte [eax + 1], 0x81
xor eax, eax
cmp eax, 2
jae 0x41074f
mov ebx, dword [esi + 0x10c]
movzx ecx, byte [ebx + eax]
mov edi, 0x65b8797f
sub edi, eax
mov edx, 0x65b8797f
sub edx, eax
and edi, edx
xor edi, 0xffffffff
mov edx, ecx
and edx, edi
mov edi, 0x65b8797f
sub edi, eax
xor ecx, 0xffffffff
and edi, ecx
or edx, edi
mov ecx, edx
shl ecx, 1
xor ecx, 0xffffffff
add edx, ecx
mov byte [ebx + eax], dl
add eax, 1
jmp 0x41070a
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x10c]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0x29c], eax
mov eax, dword [esi + 0x3a4]
mov al, byte [eax]
mov byte [esi + 0x1b0], al
mov eax, dword [esi + 0x108]
mov byte [eax], 0x7a
mov byte [eax + 1], 0xdf
xor eax, eax
cmp eax, 2
jae 0x4107b8
mov ebx, dword [esi + 0x108]
mov dl, byte [ebx + eax]
mov edi, eax
shl edi, 1
and edi, 0x5c
mov ecx, eax
xor ecx, 0xae
add ecx, edi
xor cl, dl
add cl, 0x90
mov byte [ebx + eax], cl
add eax, 1
jmp 0x41078c
sub esp, 8
mov eax, dword [esi + 0x108]
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
call fcn.00401960
add esp, 8
fnstcw word [esi + 0x30]
movzx eax, word [esi + 0x30]
or eax, 0xc00
mov word [esi + 0x220], ax
fldcw word [esi + 0x220]
fistp dword [esi + 0x418]
fldcw word [esi + 0x30]
mov eax, dword [esi + 0x418]
mov dword [esi + 0x338], eax
mov eax, dword [esi + 0x3a0]
mov al, byte [eax]
mov byte [esi + 0x1b4], al
mov eax, dword [esi + 0x78]
mov byte [eax], 0x8d
mov byte [eax + 1], 0x7f
mov byte [eax + 2], 0xed
xor eax, eax
cmp eax, 3
jae 0x41086e
mov ecx, dword [esi + 0x78]
movzx ebx, byte [ecx + eax]
mov edx, eax
add edx, 0x85c89773
mov ecx, 0x8c
sub ecx, eax
mov edi, 0x8c
sub edi, eax
and ecx, edi
or edx, ebx
xor ebx, 0xffffffff
or ecx, ebx
and ecx, edx
add ecx, 0xe1bc01c5
mov edx, ecx
shl edx, 1
and edx, 0x44
xor ecx, 0xa2
add ecx, edx
add cl, 1
mov edx, dword [esi + 0x78]
mov byte [edx + eax], cl
add eax, 1
jmp 0x41081e
sub esp, 8
mov eax, dword [esi + 0x78]
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
call fcn.00401960
add esp, 8
fnstcw word [esi + 0x2e]
movzx eax, word [esi + 0x2e]
or eax, 0xc00
mov word [esi + 0x21e], ax
fldcw word [esi + 0x21e]
fistp dword [esi + 0x414]
fldcw word [esi + 0x2e]
mov eax, dword [esi + 0x414]
mov dword [esi + 0x334], eax
sub esp, 4
mov eax, dword [esi + 0x280]
mov dword [esp], eax
call fcn.004145b0
add esp, 4
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4108e4
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
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 + 0x280]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a6d0
add esp, 0x10
mov ecx, dword [esi + 0x74]
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov dword [ecx + 8], 0
mov dword [ecx + 0xc], 0
sub esp, 4
mov dword [esp], edi
call fcn.00439b90
sub esp, 4
mov dword [esp], edi
call fcn.00408000
add esp, 4
mov ebx, dword [esi + 8]
mov ecx, dword [esi + 0x74]
jmp 0x410959
sub esp, 4
mov dword [esp], 0x1000
mov edi, ecx
call fcn.00439e30
cmp eax, 0
jge 0x410979
mov ecx, edi
mov edi, dword [esi + 4]
jmp 0x410fcc
mov eax, dword [esi + 0x104]
mov dword [eax], 0
mov eax, dword [edi]
mov dword [esi + 0x310], eax
mov al, byte [esi + 0x1b8]
mov byte [esi + 0x21c], al
mov byte [esi + 0x14], 0x63
mov byte [esi + 0x15], 0x62
mov byte [esi + 0x16], 0x61
mov byte [esi + 0x17], 0x60
xor eax, eax
cmp eax, 4
jae 0x4109c7
mov cl, byte [esi + eax + 0x14]
mov dl, al
add dl, 0xbc
xor dl, cl
add dl, 0x20
mov byte [esi + eax + 0x14], dl
add eax, 1
jmp 0x4109ab
mov eax, dword [esi + 0x14]
mov dword [esi + 0xb4], eax
xor edi, edi
mov ecx, 2
cmp edi, dword [0x44965c]
jb 0x4109e4
jmp 0x410a73
mov edx, dword [0x449660]
cmp dword [edx + edi*8], 0x4947caf6
sete bl
xor ecx, ecx
mov byte [esi + 0xf], bl
test bl, 1
jne 0x410a00
jmp 0x410a63
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, dword [esi + 0xb4]
je 0x410a63
mov eax, dword [0x449664]
xor ecx, ecx
sub esp, 0x20
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esi + 0x310]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov eax, dword [esi + 0x104]
mov dword [esp + 0x1c], eax
call fcn.0043b480
add esp, 0x20
mov ecx, 1
test byte [esi + 0xf], 1
je 0x410a6b
jmp 0x410a73
add edi, 1
jmp 0x4109d2
cmp ecx, 2
mov ebx, dword [esi + 8]
je 0x410a81
mov dword [esi + 0xb4], eax
mov eax, dword [esi + 0x39c]
mov al, byte [eax]
mov byte [esi + 0x1bc], al
mov eax, dword [esi + 0x100]
mov byte [eax], 0xcf
mov byte [eax + 1], 0xcc
mov byte [eax + 2], 0xcd
mov byte [eax + 3], 0xe
xor eax, eax
cmp eax, 4
jae 0x410ac6
mov edi, dword [esi + 0x100]
mov cl, byte [edi + eax]
mov dl, al
add dl, 0x53
xor dl, cl
add dl, 0x68
mov byte [edi + eax], dl
add eax, 1
jmp 0x410aa6
mov eax, dword [esi + 0x100]
mov eax, dword [eax]
cmp dword [esi + 0xb4], eax
jne 0x410fc6
mov edi, dword [esi + 0x104]
mov eax, dword [edi]
xor ecx, ecx
sub ecx, eax
add ecx, 0xfffffffe
xor eax, eax
sub eax, ecx
sub esp, 4
mov dword [esp], eax
call fcn.00439b40
add esp, 4
mov dword [esi + 0xbc], eax
mov eax, dword [edi]
add eax, 2
mov dword [esi + 0x2f8], eax
mov eax, dword [esi + 0x74]
mov eax, dword [eax]
mov dword [esi + 0x30c], eax
mov al, byte [esi + 0x1c0]
mov byte [esi + 0x218], al
mov byte [esi + 0x18], 0x63
mov byte [esi + 0x19], 0x62
mov byte [esi + 0x1a], 0x61
mov byte [esi + 0x1b], 0x60
xor eax, eax
cmp eax, 4
jae 0x410b51
mov cl, byte [esi + eax + 0x18]
mov dl, al
add dl, 0xbc
xor dl, cl
add dl, 0x20
mov byte [esi + eax + 0x18], dl
add eax, 1
jmp 0x410b35
mov eax, dword [esi + 0x18]
mov dword [esi + 0x238], eax
xor edi, edi
mov ecx, 2
cmp edi, dword [0x44965c]
jb 0x410b6e
jmp 0x410bff
mov edx, dword [0x449660]
cmp dword [edx + edi*8], 0x4947caf6
sete bl
xor ecx, ecx
mov byte [esi + 0xe], bl
test bl, 1
jne 0x410b8a
jmp 0x410bef
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, dword [esi + 0x238]
je 0x410bef
mov eax, dword [0x449664]
xor ecx, ecx
sub esp, 0x20
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esi + 0x30c]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esi + 0xbc]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x2f8]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
call fcn.0043b480
add esp, 0x20
mov ecx, 1
test byte [esi + 0xe], 1
je 0x410bf7
jmp 0x410bff
add edi, 1
jmp 0x410b5c
cmp ecx, 2
mov ecx, dword [esi + 0x238]
je 0x410c0c
mov ecx, eax
cmp ecx, 0
jl 0x410fab
sub esp, 4
mov eax, dword [esi + 0x294]
mov dword [esp], eax
call fcn.004145b0
add esp, 4
mov ebx, eax
mov dword [esi + 0x314], ebx
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410c4c
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x240], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x294]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a6d0
add esp, 0x10
mov ecx, dword [esi + 0xbc]
mov edi, ecx
add edi, 4
mov eax, dword [ecx + 4]
movzx ecx, word [ecx]
shr ecx, 1
sub ecx, 0xe349c0f7
sub ecx, 1
add ecx, 0xe349c0f7
shl ecx, 1
add eax, ecx
mov ebx, eax
cmp ebx, dword [edi]
setae cl
test cl, 1
jne 0x410cba
jmp 0x410cc9
movzx ecx, word [ebx]
cmp ecx, 0x5c
jne 0x410cc4
jmp 0x410ccd
add ebx, 0xfffffffe
jmp 0x410cae
mov ebx, eax
jmp 0x410ccd
mov eax, dword [edi]
mov ecx, ebx
xor ecx, eax
xor eax, 0xffffffff
and ebx, eax
shl ebx, 1
sub ebx, ecx
sar ebx, 1
mov eax, ebx
add eax, dword [esi + 0x314]
add eax, 1
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410cff
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
mov ecx, dword [edi]
sub esp, 0xc
mov edi, eax
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
call fcn.00414630
add esp, 4
mov dword [esp], eax
mov eax, dword [esi + 0x240]
mov dword [esp + 4], eax
call fcn.00409c80
add esp, 8
mov ebx, eax
sub esp, 4
mov eax, dword [esi + 0x240]
mov dword [esp], eax
call fcn.00408000
add esp, 4
sub ebx, edi
sar ebx, 1
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 0x410d78
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
sub esp, 4
mov dword [esp], edi
mov dword [esi + 0x274], eax
mov dword [esp + 4], eax
call fcn.004380b0
add esp, 8
sub esp, 4
mov dword [esp], edi
call fcn.00408000
add esp, 4
jmp 0x410dab
jmp 0x410dad
sub esp, 4
mov eax, dword [esi + 0x29c]
mov dword [esp], eax
call fcn.004145b0
add esp, 4
xor ecx, ecx
sub ecx, eax
add ecx, 0xffffffff
xor ebx, ebx
sub ebx, ecx
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410de4
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x25c], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x29c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a6d0
add esp, 0xc
mov ecx, dword [esi + 0xfc]
mov dword [esp], 1
call fcn.00408bc0
xor ebx, ebx
jmp 0x410e34
sub esp, 4
mov edi, dword [esi + 0x33c]
mov dword [esp], edi
call fcn.00401f20
add esp, 4
cmp ebx, eax
jb 0x410e51
jmp 0x410f69
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], ebx
call fcn.00401f00
add esp, 4
mov dword [esp], eax
call fcn.00401940
add esp, 4
mov dword [esi + 0x22c], eax
cmp eax, 0
jne 0x410e7e
jmp 0x410f61
sub esp, 4
mov eax, dword [esi + 0x22c]
mov dword [esp], eax
call fcn.004145b0
add esp, 4
xor ecx, ecx
sub ecx, eax
add ecx, 0xffffffff
xor eax, eax
sub eax, ecx
mov dword [esi + 0x230], eax
mov ecx, 2
mov eax, dword [esi + 0x230]
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410ebf
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
mov edi, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], edi
mov eax, dword [esi + 0x230]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x22c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a6d0
add esp, 0x10
xor eax, eax
sub esp, 0x1c
mov eax, dword [esi + 0xfc]
mov dword [esp], eax
mov eax, dword [esi + 0x25c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x274]
mov dword [esp + 8], eax
mov dword [esi + 0x2d4], edi
mov dword [esp + 0xc], edi
mov eax, dword [esi + 0x334]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x338]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.00421270
add esp, 0x1c
sub esp, 4
mov eax, dword [esi + 0x2d4]
mov dword [esp], eax
call fcn.00408000
add esp, 4
jmp 0x410f61
add ebx, 1
jmp 0x410e34
sub esp, 4
mov eax, dword [esi + 0x25c]
mov dword [esp], eax
call fcn.00408000
add esp, 4
jmp 0x410f7f
sub esp, 4
mov eax, dword [esi + 0x274]
mov dword [esp], eax
call fcn.00408000
add esp, 4
jmp 0x410f95
mov edi, dword [esi + 0xfc]
mov ecx, edi
call fcn.004097b0
mov ecx, edi
call fcn.00408cb0
jmp 0x410fab
sub esp, 4
mov eax, dword [esi + 0xbc]
mov dword [esp], eax
call fcn.00439b60
add esp, 4
jmp 0x410fc1
mov ebx, dword [esi + 8]
jmp 0x410fc6
mov ecx, dword [esi + 0x74]
mov edi, dword [esi + 4]
call fcn.00439f70
jmp 0x412649
mov eax, dword [esi + 0x398]
mov al, byte [eax]
mov byte [esi + 0x1c4], al
mov eax, dword [esi + 0x70]
mov byte [eax], 0xea
mov byte [eax + 1], 0x91
xor eax, eax
cmp eax, 2
jae 0x41107e
mov ecx, dword [esi + 0x70]
movzx ecx, byte [ecx + eax]
mov ebx, 0xc3f991ef
sub ebx, eax
or ebx, ecx
xor ebx, 0xffffffff
mov edx, 0xef
sub edx, eax
and edx, ecx
or edx, ebx
mov edi, 0xc3f991ef
sub edi, eax
mov ebx, 0xc3f991ef
sub ebx, eax
and ebx, edi
or edx, ebx
mov ebx, edx
xor ebx, 0xffffffff
mov edi, edx
and edi, 2
and edx, 0xfffffffd
xor edx, 0xfffffffd
imul edx, edi
mov edi, ebx
and edi, 2
or ebx, 2
imul ebx, edi
mov edi, dword [esi + 4]
add ebx, edx
mov edx, eax
sub edx, ebx
mov ebx, dword [esi + 8]
add edx, 0x3c066e10
add edx, ecx
mov ecx, edx
xor ecx, 0x81
shl edx, 1
and edx, 0xfc
sub edx, ecx
add dl, 1
mov ecx, dword [esi + 0x70]
mov byte [ecx + eax], dl
add eax, 1
jmp 0x410ff0
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x70]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0x248], eax
mov eax, dword [esi + 0x394]
mov al, byte [eax]
mov byte [esi + 0x1c8], al
mov eax, dword [esi + 0xf8]
mov byte [eax], 0xf4
mov byte [eax + 1], 0x45
xor eax, eax
cmp eax, 2
jae 0x411103
mov ebx, dword [esi + 0xf8]
movzx edx, byte [ebx + eax]
mov ecx, eax
add ecx, 0x853cf064
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
mov edi, ecx
add edi, 1
mov edx, ecx
xor edx, 0xffffffff
or edx, 0x5f
add edx, edi
mov edi, dword [esi + 4]
shl edx, 1
xor ecx, 0xdf
add ecx, edx
add cl, 1
mov byte [ebx + eax], cl
mov ebx, dword [esi + 8]
add eax, 1
jmp 0x4110b8
call fcn.00414a30
call fcn.00414a30
sub esp, 8
mov eax, dword [esi + 0xf8]
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
call fcn.00401860
add esp, 8
cmp dword [esi + 0x248], 0
sete dl
test eax, eax
sete cl
or dl, cl
test dl, 1
jne 0x41113f
jmp 0x411144
jmp 0x411b16
mov dword [esi + 0x270], eax
sub esp, 4
mov edi, dword [esi + 0x248]
mov dword [esp], edi
call fcn.004145b0
add esp, 4
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41117b
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x2a4], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a6d0
add esp, 0x10
mov eax, dword [esi + 0x390]
mov al, byte [eax]
mov byte [esi + 0x1cc], al
mov eax, dword [esi + 0x6c]
mov byte [eax], 0x69
mov byte [eax + 1], 0xc0
xor eax, eax
cmp eax, 2
jae 0x411203
mov ecx, dword [esi + 0x6c]
movzx edx, byte [ecx + eax]
mov edi, 0x88
sub edi, eax
mov ecx, 0x88
sub ecx, eax
and ecx, edi
or ecx, edx
mov ebx, 0x88
sub ebx, eax
and ebx, edx
xor ecx, 0xffffffff
or ebx, ecx
add bl, 0x48
mov ecx, dword [esi + 0x6c]
mov byte [ecx + eax], bl
add eax, 1
jmp 0x4111c9
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x6c]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
xor edi, edi
cmp eax, 0
je 0x411288
sub esp, 4
mov dword [esi + 0x2f0], eax
mov dword [esp], eax
call fcn.004145b0
add esp, 4
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411252
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
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 + 0x2f0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a6d0
add esp, 0x10
sub esp, 4
mov eax, dword [esi + 0x270]
mov dword [esp], eax
call fcn.004145b0
add esp, 4
mov ebx, eax
mov dword [esi + 0x268], ebx
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4112bf
mov ecx, eax
mov dword [esi + 0x2a0], edi
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
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 + 0x270]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a6d0
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 + 0x268]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0xf4]
mov dword [esp + 0x14], eax
call dword [0x449658]
mov dword [esi + 0x308], eax
mov eax, dword [esi + 0x38c]
mov al, byte [eax]
mov byte [esi + 0x1d0], al
mov eax, dword [esi + 0x68]
mov byte [eax], 0xfa
mov byte [eax + 1], 0xda
mov byte [eax + 2], 0xdb
mov byte [eax + 3], 0x1c
xor ecx, ecx
cmp ecx, 4
jae 0x4113d4
mov eax, dword [esi + 0x68]
movzx edi, byte [eax + ecx]
mov dword [esi + 0x2e0], edi
xor edi, 0xffffffff
mov edx, 0xae
sub edx, ecx
or edx, edi
add edx, ecx
mov ebx, 0x1ec16aae
sub ebx, ecx
mov edi, 0x1ec16aae
sub edi, ecx
mov eax, 0x1ec16aae
sub eax, ecx
and edi, eax
or ebx, edi
mov eax, ebx
shl eax, 1
xor eax, 0xffffffff
add ebx, eax
mov edi, dword [esi + 0x2e0]
mov eax, edi
shl eax, 1
xor eax, 0xffffffff
add eax, edi
or ebx, eax
mov eax, 0xad
sub eax, edx
and ebx, eax
mov al, 0x77
sub al, bl
mov edx, dword [esi + 0x68]
mov byte [edx + ecx], al
mov eax, ecx
shl eax, 1
and eax, 2
xor ecx, 1
add ecx, eax
jmp 0x411360
mov eax, dword [esi + 0x68]
mov ecx, dword [esi + 0x308]
cmp ecx, dword [eax]
setne al
mov ebx, dword [esi + 8]
mov edi, dword [esi + 4]
test al, 1
jne 0x4113ee
jmp 0x411408
jmp 0x4113f0
sub esp, 4
mov eax, dword [esi + 0x40]
mov dword [esp], eax
call fcn.00408000
add esp, 4
jmp 0x411403
jmp 0x411b16
mov eax, dword [esi + 0xf4]
mov eax, dword [eax]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411426
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
mov ecx, dword [0x449658]
mov dword [esi + 0x2c0], ecx
mov edi, dword [esi + 0xf4]
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 + 0x268]
mov dword [esp + 8], edx
mov dword [esi + 0xc4], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edi
call dword [esi + 0x2c0]
cmp eax, 0
jge 0x4114b3
jmp 0x411484
sub esp, 4
mov eax, dword [esi + 0x40]
mov dword [esp], eax
call fcn.00408000
add esp, 4
mov edi, dword [esi + 4]
jmp 0x41149a
sub esp, 4
mov eax, dword [esi + 0xc4]
mov dword [esp], eax
call fcn.00408000
add esp, 4
jmp 0x411b14
jmp 0x4114b5
sub esp, 4
mov eax, dword [esi + 0x40]
mov dword [esp], eax
call fcn.00408000
add esp, 4
mov eax, dword [esi + 0x388]
mov al, byte [eax]
mov byte [esi + 0x1d4], al
mov eax, dword [esi + 0xf0]
mov byte [eax], 0xd2
mov byte [eax + 1], 0x7d
xor eax, eax
cmp eax, 2
jae 0x411515
mov ebx, dword [esi + 0xf0]
mov dl, byte [ebx + eax]
mov edi, eax
shl edi, 1
and edi, 0x38
mov ecx, eax
xor ecx, 0x9c
add ecx, edi
xor cl, dl
add cl, 0x20
mov byte [ebx + eax], cl
mov ecx, eax
shl ecx, 1
or eax, ecx
xor eax, 1
jmp 0x4114e3
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0xf0]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov edi, eax
cmp edi, 0
setne al
mov dword [esi + 0x48], 0
test al, 1
jne 0x411544
jmp 0x4115a0
sub esp, 4
mov dword [esp], edi
call fcn.004145b0
add esp, 4
mov ebx, eax
sub ebx, 0xffffffff
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41156f
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x48], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a6d0
add esp, 0x10
mov eax, dword [esi + 0x384]
mov al, byte [eax]
mov byte [esi + 0x1d8], al
mov eax, dword [esi + 0x64]
mov byte [eax], 0xef
mov byte [eax + 1], 0x68
xor eax, eax
cmp eax, 2
jae 0x411630
mov ecx, dword [esi + 0x64]
movzx edx, byte [ecx + eax]
mov ecx, eax
and ecx, 0x967def0d
mov ebx, eax
and ebx, 2
xor ebx, 2
mov edi, eax
and edi, 0x967def0d
imul ebx, edi
mov edi, eax
and edi, 2
or ecx, 2
imul ecx, edi
add ecx, ebx
mov edi, eax
xor edi, 0x967def0f
add ecx, edi
xor ecx, edx
mov edx, ecx
and edx, 0x4c108787
and ecx, 0xb3ef7878
xor ecx, 0xb3ef7879
sub edx, ecx
mov ecx, edx
shl ecx, 1
and ecx, 2
xor edx, 1
add edx, ecx
mov ecx, dword [esi + 0x64]
mov byte [ecx + eax], dl
xor eax, 3
mov ecx, 4
sub ecx, eax
mov eax, ecx
jmp 0x4115ba
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x64]
mov dword [esp + 4], eax
call fcn.00401b70
add esp, 8
cmp eax, 0
setne al
and al, 1
mov byte [esi + 0x13], al
mov eax, dword [esi + 0x380]
mov al, byte [eax]
mov byte [esi + 0x1dc], al
mov eax, dword [esi + 0x60]
mov byte [eax], 0x5c
mov byte [eax + 1], 0xb2
mov byte [eax + 2], 0x3b
xor eax, eax
cmp eax, 3
jae 0x4116ab
mov ecx, dword [esi + 0x60]
movzx edx, byte [ecx + eax]
mov ecx, 0x4e
sub ecx, eax
or ecx, edx
mov edi, eax
add edi, 0xb1
mov ebx, 0x4e
sub ebx, eax
or ebx, edx
sub edi, edx
add ebx, edi
and ecx, ebx
mov dl, 0x77
sub dl, cl
mov ecx, dword [esi + 0x60]
mov byte [ecx + eax], dl
add eax, 1
jmp 0x411670
sub esp, 8
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [esi + 0x60]
mov dword [esp + 4], eax
call fcn.00401a70
add esp, 8
mov dword [esi + 0x24], 0
mov dword [esi + 0x284], eax
cmp eax, 0
mov ebx, 0
je 0x4119e0
sub esp, 4
mov eax, dword [esi + 0x284]
mov dword [esp], eax
call fcn.00401f20
add esp, 4
mov ecx, 0xc
mov dword [esi + 0x24], eax
mul ecx
seto cl
add eax, 4
setb dl
mov dh, cl
and dh, dl
xor cl, dl
or dh, cl
mov ecx, 0xffffffff
test dh, 1
jne 0x411719
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
mov ebx, eax
mov eax, dword [esi + 0x24]
mov dword [ebx], eax
add ebx, 4
cmp eax, 0
sete al
test al, 1
mov dword [esi + 0x28], ebx
jne 0x41175d
jmp 0x411740
imul eax, dword [esi + 0x24], 0xc
mov edi, ebx
add edi, eax
jmp 0x41174a
mov ecx, ebx
call fcn.004146f0
add ebx, 0xc
cmp ebx, edi
jne 0x41174a
mov ebx, dword [esi + 0x28]
jmp 0x41175d
xor ecx, ecx
jmp 0x411761
cmp ecx, dword [esi + 0x24]
jb 0x41176b
jmp 0x4119e0
sub esp, 8
mov eax, dword [esi + 0x284]
mov dword [esp], eax
mov dword [esi + 0x328], ecx
mov dword [esp + 4], ecx
call fcn.00401f30
add esp, 8
mov dword [esi + 0x44], eax
mov eax, dword [esi + 0x37c]
mov al, byte [eax]
mov byte [esi + 0x1e0], al
mov eax, dword [esi + 0x5c]
mov byte [eax], 0
mov byte [eax + 1], 0x18
mov byte [eax + 2], 0xa7
xor eax, eax
cmp eax, 3
jae 0x4117de
mov ecx, dword [esi + 0x5c]
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0xcd
mov edi, edx
xor edi, 0xffffffff
and ecx, edi
mov ebx, 0x32
sub ebx, eax
and ebx, edx
or ebx, ecx
add bl, 0x98
mov ecx, dword [esi + 0x5c]
mov byte [ecx + eax], bl
add eax, 1
jmp 0x4117aa
sub esp, 8
mov eax, dword [esi + 0x44]
mov dword [esp], eax
mov eax, dword [esi + 0x5c]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0x324], eax
mov eax, dword [esi + 0x378]
mov al, byte [eax]
mov byte [esi + 0x1e4], al
mov eax, dword [esi + 0xec]
mov byte [eax], 0x13
mov byte [eax + 1], 0x2d
mov byte [eax + 2], 0xb8
xor eax, eax
cmp eax, 3
jae 0x41183d
mov edi, dword [esi + 0xec]
mov cl, byte [edi + eax]
mov dl, al
add dl, 0x86
xor dl, cl
add dl, 0xd0
mov byte [edi + eax], dl
add eax, 1
jmp 0x41181d
sub esp, 8
mov eax, dword [esi + 0x44]
mov dword [esp], eax
mov eax, dword [esi + 0xec]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0x31c], eax
mov eax, dword [esi + 0x374]
mov al, byte [eax]
mov byte [esi + 0x1e8], al
mov eax, dword [esi + 0xe8]
mov byte [eax], 0xe3
mov byte [eax + 1], 0xd4
mov byte [eax + 2], 0xd3
mov byte [eax + 3], 0x72
xor eax, eax
cmp eax, 4
jae 0x4118b4
mov ebx, dword [esi + 0xe8]
movzx edi, byte [ebx + eax]
mov ecx, 0xb8
sub ecx, eax
or ecx, edi
mov edx, 0xb8
sub edx, eax
and edx, edi
xor ecx, 0xffffffff
or edx, ecx
add dl, 0xc8
mov byte [ebx + eax], dl
add eax, 1
jmp 0x411883
sub esp, 8
mov eax, dword [esi + 0x44]
mov dword [esp], eax
mov eax, dword [esi + 0xe8]
mov dword [esp + 4], eax
call fcn.00401b70
add esp, 8
cmp eax, 0
setg byte [esi + 0x10]
mov eax, dword [esi + 0x370]
mov al, byte [eax]
mov byte [esi + 0x1ec], al
mov eax, dword [esi + 0x58]
mov byte [eax], 0x9d
mov byte [eax + 1], 0xaa
mov byte [eax + 2], 0x63
mov byte [eax + 3], 0xf1
xor ebx, ebx
cmp ebx, 4
jae 0x411976
mov eax, dword [esi + 0x58]
movzx eax, byte [eax + ebx]
mov dword [esi + 0x2e8], eax
mov eax, ebx
xor eax, 0x1b16274b
mov edx, ebx
shl edx, 1
and edx, 0xc9d3b168
sub edx, eax
mov eax, edx
shl eax, 1
and eax, 0xd0a15dfc
xor edx, 0xe850aefe
add edx, eax
mov edi, edx
add edi, 0x4b
mov ecx, edx
add ecx, 0x4b
mov eax, edx
add eax, 0x4b
and ecx, eax
mov eax, edx
add eax, 0x4b
add edx, 0x4b
and eax, edx
or eax, ecx
mov ecx, dword [esi + 0x2e8]
and eax, ecx
or edi, ecx
mov ecx, eax
shl ecx, 1
xor ecx, 0xffffffff
add eax, ecx
and eax, edi
add al, 0x10
mov ecx, dword [esi + 0x58]
mov byte [ecx + ebx], al
mov eax, ebx
shl eax, 1
and eax, 2
xor ebx, 1
add ebx, eax
jmp 0x4118f8
sub esp, 8
mov eax, dword [esi + 0x44]
mov dword [esp], eax
mov eax, dword [esi + 0x58]
mov dword [esp + 4], eax
call fcn.00401b70
add esp, 8
xor edx, edx
cmp eax, 0
setg dl
mov edi, dword [esi + 0x328]
imul eax, edi, 0xc
mov ebx, dword [esi + 0x28]
mov ecx, ebx
add ecx, eax
sub esp, 0x10
mov eax, dword [esi + 0x324]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x31c]
mov dword [esp], eax
and edx, 1
mov dword [esp + 0xc], edx
xor eax, eax
mov dl, byte [esi + 0x10]
mov al, dl
and eax, 1
mov dword [esp + 8], eax
call fcn.00414710
mov ecx, edi
sub ecx, 0xffffffff
jmp 0x411761
mov dword [esi + 0x28], ebx
mov edi, dword [esi + 0x36c]
mov eax, dword [esi + 0x2a4]
mov dword [edi], eax
mov eax, dword [esi + 0x2a0]
mov dword [edi + 4], eax
mov eax, dword [esi + 0xc4]
mov dword [edi + 8], eax
mov eax, dword [esi + 0x48]
mov dword [edi + 0xc], eax
mov al, byte [esi + 0x13]
mov byte [edi + 0x10], al
sub esp, 4
mov ebx, dword [esi + 0x2b4]
mov ecx, ebx
mov dword [esp], 2
call fcn.00408bc0
sub esp, 0x10
mov dword [esp], ebx
mov dword [esp + 4], edi
mov edi, dword [esi + 0x28]
mov dword [esp + 8], edi
mov eax, dword [esi + 0x24]
mov dword [esp + 0xc], eax
call fcn.00415640
add esp, 0x10
mov ecx, ebx
call fcn.004097b0
mov ecx, edi
cmp ecx, 0
sete al
test al, 1
mov ebx, dword [esi + 8]
mov edi, dword [esi + 4]
jne 0x411aa4
jmp 0x411a61
mov edx, ecx
add edx, 0xfffffffc
imul eax, dword [ecx - 4], 0xc
mov ebx, ecx
add ebx, eax
cmp ecx, ebx
je 0x411a91
mov dword [esi + 0x2dc], edx
jmp 0x411a7a
add ebx, 0xfffffff4
mov ecx, ebx
call fcn.00414890
cmp ebx, dword [esi + 0x28]
jne 0x411a7a
mov edx, dword [esi + 0x2dc]
jmp 0x411a91
sub esp, 4
mov dword [esp], edx
call fcn.00408000
add esp, 4
mov ebx, dword [esi + 8]
jmp 0x411aa4
jmp 0x411aa6
sub esp, 4
mov eax, dword [esi + 0x2a4]
mov dword [esp], eax
call fcn.00408000
add esp, 4
jmp 0x411abc
jmp 0x411abe
sub esp, 4
mov eax, dword [esi + 0xc4]
mov dword [esp], eax
call fcn.00408000
add esp, 4
mov eax, dword [esi + 0x2a0]
cmp eax, 0
je 0x411aeb
sub esp, 4
mov dword [esp], eax
call fcn.00408000
add esp, 4
cmp dword [esi + 0x48], 0
sete al
test al, 1
jne 0x411b09
jmp 0x411af8
sub esp, 4
mov eax, dword [esi + 0x48]
mov dword [esp], eax
call fcn.00408000
add esp, 4
mov ecx, dword [esi + 0x2b4]
call fcn.00408cb0
jmp 0x411b16
jmp 0x412649
mov eax, dword [esi + 0x368]
mov al, byte [eax]
mov byte [esi + 0x1f0], al
mov eax, dword [esi + 0xe4]
mov byte [eax], 0x3f
mov byte [eax + 1], 0xb6
xor eax, eax
cmp eax, 2
jae 0x411b76
mov edi, dword [esi + 0xe4]
mov dl, byte [edi + eax]
movzx ecx, dl
mov dword [esi + 0x2b8], ecx
mov ecx, eax
add ecx, 0xec828a5d
mov ebx, ecx
and ebx, dword [esi + 0x2b8]
shl ebx, 1
sub ecx, ebx
mov ebx, dword [esi + 8]
add cl, dl
add cl, 0x18
mov byte [edi + eax], cl
mov edi, dword [esi + 4]
add eax, 1
jmp 0x411b38
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0xe4]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0x244], eax
mov eax, dword [esi + 0x364]
mov al, byte [eax]
mov byte [esi + 0x1f4], al
mov eax, dword [esi + 0xe0]
mov byte [eax], 0x73
mov byte [eax + 1], 0xe4
xor eax, eax
cmp eax, 2
jae 0x411bf9
mov ebx, dword [esi + 0xe0]
movzx ecx, byte [ebx + eax]
mov edi, 0xc4
sub edi, eax
mov edx, 0xc4
sub edx, eax
and edi, edx
xor edi, 0xffffffff
mov edx, ecx
and edx, edi
xor ecx, 0xffffffff
mov edi, 0xc4
sub edi, eax
and edi, ecx
or edx, edi
mov edi, dword [esi + 4]
mov cl, 0x27
sub cl, dl
mov byte [ebx + eax], cl
mov ebx, dword [esi + 8]
add eax, 1
jmp 0x411bb3
sub esp, 8
mov eax, dword [esi + 0xe0]
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
call fcn.00401860
add esp, 8
mov edx, dword [esi + 0x244]
test edx, edx
sete ch
mov dword [esi + 0x23c], eax
test eax, eax
sete cl
or ch, cl
test ch, 1
jne 0x411c32
jmp 0x411c37
jmp 0x41230c
sub esp, 4
mov dword [esp], edx
call fcn.004145b0
add esp, 4
mov ebx, eax
sub ebx, 0xffffffff
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411c62
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x298], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x244]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a6d0
add esp, 0xc
mov eax, dword [esi + 0x23c]
mov dword [esp], eax
call fcn.004145b0
add esp, 4
mov dword [esi + 0x250], eax
add eax, 1
mov ecx, 2
mov dword [esi + 0x2d0], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411cd2
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
mov ebx, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], ebx
mov eax, dword [esi + 0x2d0]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x23c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a6d0
add esp, 0x10
xor eax, eax
sub esp, 0x18
mov dword [esp], 0
mov dword [esi + 0x38], ebx
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x250]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0xdc]
mov dword [esp + 0x14], eax
call dword [0x449658]
mov dword [esi + 0x2f4], eax
mov eax, dword [esi + 0x360]
mov cl, byte [eax]
mov byte [esi + 0x1f8], cl
mov ecx, dword [esi + 0xd8]
mov byte [ecx], 0x70
mov byte [ecx + 1], 0x54
mov byte [ecx + 2], 0x55
mov byte [ecx + 3], 0x16
xor ecx, ecx
cmp ecx, 4
jae 0x411da9
mov ebx, dword [esi + 0xd8]
mov al, byte [ebx + ecx]
mov edi, ecx
and edi, 0xf5
xor edi, 0xf5
mov edx, ecx
and edx, 0xa
sub edx, edi
mov edi, dword [esi + 4]
xor dl, al
add dl, 0xa8
mov byte [ebx + ecx], dl
add ecx, 1
jmp 0x411d76
mov ecx, dword [esi + 0xd8]
mov ecx, dword [ecx]
cmp dword [esi + 0x2f4], ecx
mov ebx, dword [esi + 8]
je 0x411dd4
jmp 0x411dbe
sub esp, 4
mov eax, dword [esi + 0x38]
mov dword [esp], eax
call fcn.00408000
add esp, 4
jmp 0x41230c
mov eax, dword [esi + 0xdc]
mov eax, dword [eax]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411df2
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
mov ecx, dword [0x449658]
mov dword [esi + 0x2c4], ecx
mov edi, dword [esi + 0xdc]
mov ecx, dword [edi]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov edx, dword [esi + 0x38]
mov dword [esp + 4], edx
mov edx, dword [esi + 0x250]
mov dword [esp + 8], edx
mov dword [esi + 0xc0], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edi
call dword [esi + 0x2c4]
cmp eax, 0
jge 0x411e81
jmp 0x411e50
sub esp, 4
mov eax, dword [esi + 0x38]
mov dword [esp], eax
call fcn.00408000
add esp, 4
mov edi, dword [esi + 4]
mov eax, dword [esi + 0xc0]
jmp 0x411e6c
sub esp, 4
mov dword [esp], eax
call fcn.00408000
add esp, 4
jmp 0x411e7c
jmp 0x41230a
jmp 0x411e83
sub esp, 4
mov eax, dword [esi + 0x38]
mov dword [esp], eax
call fcn.00408000
add esp, 4
mov eax, dword [esi + 0x35c]
mov al, byte [eax]
mov byte [esi + 0x1fc], al
mov eax, dword [esi + 0x54]
mov byte [eax], 0xd6
mov byte [eax + 1], 0x7f
xor eax, eax
cmp eax, 2
jae 0x411efa
mov ecx, dword [esi + 0x54]
movzx edi, byte [ecx + eax]
mov edx, eax
add edx, 0x72d53b0e
mov ebx, eax
add ebx, 0x72d53b0e
mov ecx, edx
and ecx, ebx
or ecx, edi
and edx, edi
sub ecx, edx
mov edi, ecx
shl edi, 1
and edi, 0x1e
xor ecx, 0x6956278f
mov edx, ecx
add edx, edi
shl ecx, 1
and ecx, 2
xor edx, 1
add edx, ecx
mov ecx, dword [esi + 0x54]
mov byte [ecx + eax], dl
add eax, 1
jmp 0x411eae
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0x54]
mov dword [esp + 4], eax
call fcn.00401b70
add esp, 8
cmp eax, 0
setne al
and al, 1
mov byte [esi + 0x12], al
mov eax, dword [esi + 0x358]
mov al, byte [eax]
mov byte [esi + 0x200], al
mov eax, dword [esi + 0x50]
mov byte [eax], 0x3e
mov byte [eax + 1], 0x2c
mov byte [eax + 2], 0xa5
xor eax, eax
cmp eax, 3
jae 0x411fc4
mov ecx, dword [esi + 0x50]
movzx ecx, byte [ecx + eax]
mov edx, eax
add edx, 0x7b
and edx, ecx
shl edx, 1
add ecx, eax
add ecx, 0x555b18a6
sub ecx, edx
mov edx, ecx
add edx, 0x9532e6d5
mov edi, 0x6acd192a
sub edi, ecx
and edx, 0xab900427
and edi, 0xab900427
xor edi, 0xab900427
or edx, edi
mov ebx, edx
and ebx, 2
xor ebx, 2
mov edi, edx
and edi, 0x25
imul edi, ebx
mov ebx, edx
and ebx, 2
or edx, 2
imul edx, ebx
add edx, edi
mov edi, ecx
add edi, 0x15
or edi, 0xd8
mov ebx, 0x2a
sub ebx, ecx
or ebx, 0x27
and ebx, edi
sub edx, ebx
mov ecx, dword [esi + 0x50]
mov byte [ecx + eax], dl
add eax, 1
jmp 0x411f3a
sub esp, 8
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [esi + 0x50]
mov dword [esp + 4], eax
call fcn.00401a70
add esp, 8
mov dword [esi + 0x27c], eax
cmp eax, 0
setne al
xor ebx, ebx
test al, 1
mov dword [esi + 0x1c], 0
jne 0x411ffa
jmp 0x41220a
call fcn.00414a30
sub esp, 4
mov eax, dword [esi + 0x27c]
mov dword [esp], eax
call fcn.00401f20
add esp, 4
mov ecx, 8
mov dword [esi + 0x1c], eax
mul ecx
seto dl
add eax, 4
setb cl
setae ch
mov dh, dl
and dh, ch
mov ch, dl
xor ch, cl
add dl, ch
sub dl, dh
mov ecx, 0xffffffff
test dl, 1
jne 0x412041
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
mov ebx, eax
mov eax, dword [esi + 0x1c]
mov dword [ebx], eax
add ebx, 4
cmp eax, 0
sete al
jmp 0x412061
test al, 1
mov dword [esi + 0x20], ebx
jne 0x412087
jmp 0x41206a
mov eax, dword [esi + 0x1c]
shl eax, 3
mov edi, ebx
add edi, eax
mov ecx, ebx
call fcn.004148c0
add ebx, 8
cmp ebx, edi
jne 0x412074
mov ebx, dword [esi + 0x20]
jmp 0x412087
xor ecx, ecx
jmp 0x41208b
cmp ecx, dword [esi + 0x1c]
setb al
test al, 1
jne 0x41209c
jmp 0x412097
jmp 0x41220a
sub esp, 8
mov eax, dword [esi + 0x27c]
mov dword [esp], eax
mov dword [esi + 0x320], ecx
mov dword [esp + 4], ecx
call fcn.00401f30
add esp, 8
mov dword [esi + 0x254], eax
mov eax, dword [esi + 0x354]
mov al, byte [eax]
mov byte [esi + 0x204], al
mov eax, dword [esi + 0x4c]
mov byte [eax], 0xbd
mov byte [eax + 1], 0xb7
mov byte [eax + 2], 0x5a
xor eax, eax
cmp eax, 3
jae 0x412130
mov ecx, dword [esi + 0x4c]
movzx ebx, byte [ecx + eax]
mov edx, 0xd9863767
sub edx, eax
or edx, ebx
mov ecx, 0x67
sub ecx, eax
mov edi, 0x67
sub edi, eax
or ecx, edi
and ecx, ebx
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
add edx, 0xcc31bb3f
mov ebx, edx
shl ebx, 1
and ebx, 2
shl edx, 1
and edx, 2
add ecx, 0x40
sub ecx, edx
add ecx, ebx
mov edx, dword [esi + 0x4c]
mov byte [edx + eax], cl
add eax, 1
jmp 0x4120de
sub esp, 8
mov eax, dword [esi + 0x254]
mov dword [esp], eax
mov eax, dword [esi + 0x4c]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0x2fc], eax
mov eax, dword [esi + 0x350]
mov al, byte [eax]
mov byte [esi + 0x208], al
mov eax, dword [esi + 0xd4]
mov byte [eax], 0x1b
mov byte [eax + 1], 0x25
mov byte [eax + 2], 0xa0
xor eax, eax
cmp eax, 3
jae 0x4121b5
mov ebx, dword [esi + 0xd4]
movzx edx, byte [ebx + eax]
mov ecx, eax
add ecx, 0x1bc96ce
mov edi, ecx
and edi, edx
shl edi, 1
sub ecx, edi
add ecx, edx
mov edx, ecx
xor edx, 0xffffffff
or edx, 0x8f
mov edi, ecx
or edi, 0x8f
add edx, edi
add edx, ecx
add dl, 2
mov byte [ebx + eax], dl
add eax, 1
jmp 0x412172
sub esp, 8
mov eax, dword [esi + 0x254]
mov dword [esp], eax
mov eax, dword [esi + 0xd4]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov edi, dword [esi + 0x320]
mov edx, edi
shl edx, 3
mov ebx, dword [esi + 0x20]
mov ecx, ebx
add ecx, edx
sub esp, 8
mov dword [esp], eax
mov eax, dword [esi + 0x2fc]
mov dword [esp + 4], eax
call fcn.004148d0
xor eax, eax
sub eax, edi
add eax, 0xffffffff
xor ecx, ecx
sub ecx, eax
jmp 0x41208b
mov dword [esi + 0x20], ebx
mov edi, dword [esi + 0x34c]
mov eax, dword [esi + 0x298]
mov dword [edi], eax
mov dword [edi + 4], 0
mov eax, dword [esi + 0xc0]
mov dword [edi + 8], eax
mov dword [edi + 0xc], 0
mov al, byte [esi + 0x12]
mov byte [edi + 0x10], al
sub esp, 4
mov ebx, dword [esi + 0x2b0]
mov ecx, ebx
mov dword [esp], 3
call fcn.00408bc0
sub esp, 0x10
mov dword [esp], ebx
mov dword [esp + 4], edi
mov edi, dword [esi + 0x20]
mov dword [esp + 8], edi
mov eax, dword [esi + 0x1c]
mov dword [esp + 0xc], eax
call fcn.0041eeb0
add esp, 0x10
mov ecx, ebx
call fcn.004097b0
mov ecx, edi
cmp ecx, 0
sete al
test al, 1
mov ebx, dword [esi + 8]
mov edi, dword [esi + 4]
jne 0x4122d1
jmp 0x41228a
mov edx, ecx
add edx, 0xfffffffc
mov eax, dword [ecx - 4]
shl eax, 3
mov ebx, ecx
add ebx, eax
cmp ecx, ebx
je 0x4122bc
mov dword [esi + 0x2e4], edx
jmp 0x4122a5
add ebx, 0xfffffff8
mov ecx, ebx
call fcn.004149a0
cmp ebx, dword [esi + 0x20]
jne 0x4122a5
mov edx, dword [esi + 0x2e4]
jmp 0x4122bc
sub esp, 4
mov dword [esp], edx
call fcn.00408000
add esp, 4
mov ebx, dword [esi + 8]
jmp 0x4122cf
jmp 0x4122d1
mov eax, dword [esi + 0xc0]
jmp 0x4122d9
sub esp, 4
mov dword [esp], eax
call fcn.00408000
add esp, 4
jmp 0x4122e9
sub esp, 4
mov eax, dword [esi + 0x298]
mov dword [esp], eax
call fcn.00408000
add esp, 4
mov ecx, dword [esi + 0x2b0]
call fcn.00408cb0
jmp 0x41230a
jmp 0x41230c
jmp 0x412649
mov eax, dword [esi + 0x348]
mov al, byte [eax]
mov byte [esi + 0x20c], al
mov eax, dword [esi + 0xd0]
mov byte [eax], 0x3b
mov byte [eax + 1], 0xac
xor eax, eax
cmp eax, 2
jae 0x41236c
mov ebx, dword [esi + 0xd0]
movzx ecx, byte [ebx + eax]
mov edx, eax
add edx, 0x9a5d6b33
xor edx, ecx
mov ecx, edx
add ecx, 0x2d14a667
shl edx, 1
and edx, 2
xor edx, 2
mov edi, ecx
and edi, edx
shl edi, 1
xor ecx, edx
xor ecx, 1
add ecx, edi
mov byte [ebx + eax], cl
add eax, 1
jmp 0x41232e
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0xd0]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0x26c], eax
mov eax, dword [esi + 0x344]
mov al, byte [eax]
mov byte [esi + 0x210], al
mov eax, dword [esi + 0xcc]
mov byte [eax], 0x42
mov byte [eax + 1], 0xf5
xor eax, eax
cmp eax, 2
jae 0x4123d5
mov ebx, dword [esi + 0xcc]
mov dl, byte [ebx + eax]
mov edi, eax
shl edi, 1
and edi, 0xa8
mov ecx, eax
xor ecx, 0x54
add ecx, edi
xor cl, dl
add cl, 0x60
mov byte [ebx + eax], cl
add eax, 1
jmp 0x4123a9
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov eax, dword [esi + 0xcc]
mov dword [esp + 4], eax
call fcn.00401860
add esp, 8
mov dword [esi + 0xb8], eax
mov eax, dword [esi + 0x340]
mov al, byte [eax]
mov byte [esi + 0x214], al
mov eax, dword [esi + 0xc8]
mov byte [eax], 0x85
mov byte [eax + 1], 0
xor eax, eax
cmp eax, 2
jae 0x412461
mov ebx, dword [esi + 0xc8]
movzx ecx, byte [ebx + eax]
mov edx, 0x48
sub edx, eax
mov edi, 0x48
sub edi, eax
and edx, edi
mov edi, eax
add edi, 0x48874b7
or edi, ecx
xor edi, 0xffffffff
xor edx, 0xffffffff
and ecx, edx
or ecx, edi
mov edx, ecx
shl edx, 1
xor edx, 0xffffffff
add ecx, edx
add cl, 0x48
mov byte [ebx + eax], cl
mov ecx, eax
shl ecx, 1
or ecx, 1
sub ecx, eax
mov eax, ecx
jmp 0x412412
sub esp, 8
mov eax, dword [esi + 0xc8]
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
call fcn.00401860
add esp, 8
mov edx, dword [esi + 0x26c]
test edx, edx
sete ch
cmp dword [esi + 0xb8], 0
sete cl
or ch, cl
test eax, eax
sete cl
or ch, cl
test ch, 1
mov edi, dword [esi + 4]
jne 0x4124a3
jmp 0x4124ab
mov ebx, dword [esi + 8]
jmp 0x412647
mov dword [esi + 0x318], eax
sub esp, 4
mov dword [esp], edx
call fcn.004145b0
add esp, 4
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 0x4124e3
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x258], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x26c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a6d0
add esp, 0xc
mov eax, dword [esi + 0xb8]
mov dword [esp], eax
call fcn.004145b0
add esp, 4
sub eax, 0xffffffff
mov ecx, 2
mov dword [esi + 0x2d8], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41254d
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.00407ff0
add esp, 4
mov ebx, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], ebx
mov eax, dword [esi + 0x2d8]
mov dword [esp + 4], eax
mov eax, dword [esi + 0xb8]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a6d0
add esp, 4
mov eax, dword [esi + 0x258]
mov dword [esp], eax
mov dword [esi + 0x300], ebx
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x2ac]
mov dword [esp + 8], eax
call fcn.00437e30
add esp, 0xc
mov ebx, eax
cmp ebx, 0
je 0x412616
sub esp, 4
mov edi, dword [esi + 0x2a8]
mov ecx, edi
mov dword [esp], 1
call fcn.00408bc0
mov eax, dword [esi + 0x2ac]
mov eax, dword [eax]
sub esp, 0xc
mov ecx, edi
mov edx, dword [esi + 0x318]
mov dword [esp], edx
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
call fcn.00408ff0
mov ecx, edi
call fcn.004097b0
sub esp, 4
mov dword [esp], ebx
call fcn.00408000
add esp, 4
mov edi, dword [esi + 4]
jmp 0x412609
mov ecx, dword [esi + 0x2a8]
call fcn.00408cb0
jmp 0x412616
mov ebx, dword [esi + 8]
jmp 0x41261b
sub esp, 4
mov eax, dword [esi + 0x300]
mov dword [esp], eax
call fcn.00408000
add esp, 4
jmp 0x412631
sub esp, 4
mov eax, dword [esi + 0x258]
mov dword [esp], eax
call fcn.00408000
add esp, 4
jmp 0x412647
jmp 0x412649
jmp 0x41264b
add edi, 0x12ef10cf
add edi, 1
sub edi, 0x12ef10cf
jmp 0x40f46d
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret