Function at 0x40ece4
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x3b8
mov esi, esp
mov edi, dword [ebp + 8]
call fcn.00414290
push eax
mov eax, esp
push eax
mov ecx, esp
push eax
mov ebx, esp
push eax
mov dword [esi + 0x394], esp
push eax
mov dword [esi + 0x390], esp
push eax
mov dword [esi + 0x38c], esp
push eax
mov dword [esi + 0x388], esp
push eax
mov dword [esi + 0x384], esp
push eax
mov dword [esi + 0x380], esp
push eax
mov dword [esi + 0x37c], esp
push eax
mov dword [esi + 0x378], esp
push eax
mov dword [esi + 0x374], esp
push eax
mov dword [esi + 0x370], esp
push eax
mov dword [esi + 0x36c], esp
push eax
mov dword [esi + 0xa8], esp
push eax
mov dword [esi + 0x368], esp
push eax
mov dword [esi + 0x64], esp
push eax
mov dword [esi + 0x364], esp
push eax
mov dword [esi + 0x360], esp
push eax
mov dword [esi + 0x35c], esp
push eax
mov dword [esi + 0x1c8], esp
push eax
mov dword [esi + 0x358], esp
push eax
mov dword [esi + 0x354], esp
push eax
mov dword [esi + 0x350], esp
push eax
mov dword [esi + 0x34c], esp
push eax
mov dword [esi + 0x348], esp
push eax
mov dword [esi + 0x344], esp
push eax
mov dword [esi + 0x340], esp
push eax
mov dword [esi + 0x60], esp
push eax
mov dword [esi + 0x33c], esp
push eax
mov dword [esi + 0xa4], esp
push eax
mov dword [esi + 0x338], esp
push eax
mov dword [esi + 0x334], esp
sub esp, 0x88
mov edx, esp
and edx, 0xfffffff8
mov dword [esi + 0x5c], edx
mov esp, edx
push eax
mov dword [esi + 0x330], esp
push eax
mov dword [esi + 0x32c], esp
push eax
mov dword [esi + 0x328], esp
push eax
mov dword [esi + 0x324], esp
push eax
mov dword [esi + 0x320], esp
push eax
mov dword [esi + 0x31c], esp
push eax
mov dword [esi + 0xa0], esp
push eax
mov dword [esi + 0x318], esp
push eax
mov dword [esi + 0x314], esp
push eax
mov dword [esi + 0x310], esp
push eax
mov dword [esi + 0x9c], esp
push eax
mov dword [esi + 0x30c], esp
push eax
mov dword [esi + 0x308], esp
push eax
mov dword [esi + 0x304], esp
push eax
mov dword [esi + 0x300], esp
push eax
mov dword [esi + 0x2fc], esp
push eax
mov dword [esi + 0x2f8], esp
push eax
mov dword [esi + 0x2f4], esp
push eax
mov dword [esi + 0x2f0], esp
push eax
mov dword [esi + 0x2ec], esp
push eax
mov dword [esi + 0x98], esp
push eax
mov dword [esi + 0x2e8], esp
push eax
mov dword [esi + 0x2e4], esp
push eax
mov dword [esi + 0x2e0], esp
sub esp, 0x10
mov dword [esi + 0x58], esp
push eax
mov dword [esi + 0x94], esp
push eax
mov dword [esi + 0x2dc], esp
push eax
mov dword [esi + 0x2d8], esp
sub esp, 0x88
mov edx, esp
and edx, 0xfffffff8
mov dword [esi + 0x90], edx
mov esp, edx
push eax
mov dword [esi + 0x2d4], esp
push eax
mov dword [esi + 0x2d0], esp
push eax
mov dword [esi + 0x2cc], esp
push eax
mov dword [esi + 0x2c8], esp
push eax
mov dword [esi + 0x2c4], esp
push eax
mov dword [esi + 0x2c0], esp
push eax
mov dword [esi + 0x8c], esp
push eax
mov dword [esi + 0x2bc], esp
push eax
mov dword [esi + 0x2b8], esp
push eax
mov dword [esi + 0x2b4], esp
push eax
mov dword [esi + 0x2b0], esp
push eax
mov dword [esi + 0x2ac], esp
push eax
mov dword [esi + 0x2a8], esp
push eax
mov dword [esi + 0x2a4], esp
push eax
mov dword [esi + 0x2a0], esp
push eax
mov dword [esi + 0x54], esp
push eax
mov dword [esi + 0x29c], esp
push eax
mov dword [esi + 0x50], esp
push eax
mov dword [esi + 0x298], esp
push eax
mov dword [esi + 0x294], esp
push eax
mov dword [esi + 0x290], esp
push eax
mov dword [esi + 0x28c], esp
push eax
mov dword [esi + 0x288], esp
sub esp, 0x14
mov dword [esi + 0x284], esp
sub esp, 0x88
mov edx, esp
and edx, 0xfffffff8
mov dword [esi + 0x4c], edx
mov esp, edx
push eax
mov dword [esi + 0x280], esp
push eax
mov dword [esi + 0x27c], esp
push eax
mov dword [esi + 0x278], esp
push eax
mov dword [esi + 0x274], esp
push eax
mov dword [esi + 0x88], esp
push eax
mov dword [esi + 0x270], esp
push eax
mov dword [esi + 0x26c], esp
push eax
mov dword [esi + 0x268], esp
push eax
mov dword [esi + 0x264], esp
push eax
mov dword [esi + 0x48], esp
push eax
mov dword [esi + 0x260], esp
push eax
mov dword [esi + 0x44], esp
push eax
mov dword [esi + 0x25c], esp
push eax
mov dword [esi + 0x40], esp
push eax
mov dword [esi + 0x258], esp
sub esp, 0x14
mov dword [esi + 0x254], esp
sub esp, 0x88
mov edx, esp
and edx, 0xfffffff8
mov dword [esi + 0x1c4], edx
mov esp, edx
mov cl, byte [ecx]
mov byte [esi + 0xac], cl
mov byte [eax], 0x9b
mov byte [eax + 1], 0x79
movzx edx, byte [eax]
mov ecx, edx
and ecx, 0x47
xor edx, 0xffffffff
and edx, 0xba7277b8
or ecx, edx
add ecx, 0xdd384867
mov edx, ecx
xor edx, 0x27
shl ecx, 1
and ecx, 0xb0
sub ecx, edx
mov byte [eax], cl
movzx edx, byte [eax + 1]
mov ecx, edx
and ecx, 0x46
xor edx, 0xffffffff
and edx, 0xba7277b9
or ecx, edx
add ecx, 0xdd384867
mov edx, ecx
xor edx, 0x27
shl ecx, 1
and ecx, 0xb0
sub ecx, edx
mov byte [eax + 1], cl
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401aa0
add esp, 8
mov edi, eax
cmp edi, 0
sete cl
test cl, 1
jne 0x40eb8a
jmp 0x40eb91
xor eax, eax
jmp 0x4119b3
mov dword [esi + 0x398], ebx
xor ebx, ebx
jmp 0x40eb9b
sub esp, 4
mov dword [esp], edi
call fcn.00401f50
add esp, 4
cmp ebx, eax
jb 0x40ebb4
mov al, 1
jmp 0x4119b3
sub esp, 8
mov dword [esi + 0x250], edi
mov dword [esp], edi
mov dword [esi + 4], ebx
mov dword [esp + 4], ebx
call fcn.00401f60
add esp, 8
mov edx, eax
mov eax, dword [esi + 0x394]
mov al, byte [eax]
mov byte [esi + 0xb0], al
mov ebx, dword [esi + 0x398]
mov byte [ebx], 0xc
mov byte [ebx + 1], 0xf9
movzx eax, byte [ebx]
mov ecx, eax
or ecx, 0x38
and eax, 0x38
xor eax, ecx
add al, 0x40
mov byte [ebx], al
movzx eax, byte [ebx + 1]
mov ecx, eax
or ecx, 0x39
and eax, 0x39
xor eax, ecx
add al, 0x40
mov byte [ebx + 1], al
sub esp, 0xc
mov dword [esi], edx
mov dword [esp], edx
mov dword [esp + 4], ebx
mov dword [esp + 8], 3
call fcn.00401e50
add esp, 0xc
cmp eax, 0
setne al
xor al, 0xff
test al, 1
jne 0x40ec3a
jmp 0x40ec42
mov ecx, dword [esi + 4]
jmp 0x41199a
mov eax, dword [esi + 0x38c]
mov al, byte [eax]
mov byte [esi + 0xb4], al
mov edi, dword [esi + 0x390]
mov byte [edi], 0xb
mov byte [edi + 1], 0x90
movzx eax, byte [edi]
xor eax, 0x3bc668a7
mov ecx, eax
dec ecx
and ecx, 1
mov edx, ecx
or edx, 0x38
add eax, ecx
sub eax, edx
mov byte [edi], al
movzx ecx, byte [edi + 1]
mov eax, ecx
xor eax, 0xa8
dec ecx
and ecx, 1
mov edx, ecx
or edx, 0x38
add eax, ecx
sub eax, edx
mov byte [edi + 1], al
sub esp, 8
mov dword [esp + 4], edi
mov edi, dword [esi]
mov dword [esp], edi
call fcn.00401990
add esp, 8
fnstcw word [esi + 0x2e]
movzx eax, word [esi + 0x2e]
or eax, 0xc00
mov word [esi + 0x17e], ax
fldcw word [esi + 0x17e]
fistp dword [esi + 0x3ac]
fldcw word [esi + 0x2e]
mov eax, dword [esi + 0x3ac]
mov ecx, eax
sub ecx, 3
mov ecx, dword [esi + 4]
ja 0x411998
mov eax, dword [eax*4 + 0x43d588]
jmp eax
mov eax, dword [esi + 0x384]
mov al, byte [eax]
mov byte [esi + 0xb8], al
mov ecx, dword [esi + 0x388]
mov byte [ecx], 0x38
mov byte [ecx + 1], 0xc9
mov al, byte [ecx]
xor al, 0x88
add al, 0xc0
mov byte [ecx], al
mov al, byte [ecx + 1]
xor al, 0x89
add al, 0xc0
mov byte [ecx + 1], al
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], ecx
mov dword [esp + 8], 2
call fcn.00401e50
add esp, 0xc
cmp eax, 0
je 0x40f084
mov eax, dword [esi + 0x37c]
mov al, byte [eax]
mov byte [esi + 0xbc], al
mov edi, dword [esi + 0x380]
mov byte [edi], 0xe
mov byte [edi + 1], 0xc
mov byte [edi + 2], 0xd
mov byte [edi + 3], 0xe
movzx eax, byte [edi]
xor eax, 0xda2e9393
mov ecx, eax
and ecx, 0x67
mov edx, eax
and edx, 0x67
xor edx, 0xffffffff
add eax, 0x68
add eax, edx
add eax, ecx
add al, 1
mov byte [edi], al
movzx eax, byte [edi + 1]
xor eax, 0xda2e9394
mov ecx, eax
and ecx, 0x67
mov edx, eax
and edx, 0x67
xor edx, 0xffffffff
add eax, 0x68
add eax, edx
add eax, ecx
add al, 1
mov byte [edi + 1], al
movzx eax, byte [edi + 2]
xor eax, 0xda2e9395
mov ecx, eax
and ecx, 0x67
mov edx, eax
and edx, 0x67
xor edx, 0xffffffff
add eax, 0x68
add eax, edx
add eax, ecx
add al, 1
mov byte [edi + 2], al
movzx eax, byte [edi + 3]
xor eax, 0xda2e9396
mov ecx, eax
and ecx, 0x67
mov edx, eax
and edx, 0x67
xor edx, 0xffffffff
add eax, 0x68
add eax, edx
add eax, ecx
add al, 1
mov byte [edi + 3], al
mov eax, dword [edi]
mov dword [esi + 0x1f8], eax
mov eax, dword [esi + 0x374]
mov cl, byte [eax]
mov byte [esi + 0xc0], cl
mov eax, dword [esi + 0x378]
mov byte [eax], 0x60
mov byte [eax + 1], 0xde
movzx edx, byte [eax]
mov ecx, edx
shl ecx, 1
xor ecx, 0xffffffff
add ecx, edx
mov edi, ecx
xor edi, 0x1dc77451
or ecx, 0xe2388bae
and ecx, edi
and edx, 0x51
or ecx, edx
mov edx, ecx
and edx, 0xe1f90cdb
shl edx, 1
add ecx, 0xe1f90cdb
sub ecx, edx
add cl, 0x58
mov byte [eax], cl
movzx edx, byte [eax + 1]
mov ecx, edx
shl ecx, 1
xor ecx, 0xffffffff
add ecx, edx
mov edi, ecx
xor edi, 0x1dc77451
or ecx, 0xe2388bae
and ecx, edi
and edx, 0x51
or ecx, edx
mov edx, ecx
and edx, 0xe1f90cd8
shl edx, 1
add ecx, 0xe1f90cd8
sub ecx, edx
add cl, 0x58
mov byte [eax + 1], cl
sub esp, 0xc
mov edi, dword [esi]
mov dword [esp], edi
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1f8]
mov dword [esp + 8], eax
call fcn.00401e50
add esp, 0xc
cmp eax, 0
setne al
test al, 1
jne 0x40ee9f
jmp 0x40f084
mov eax, dword [esi + 0x36c]
mov al, byte [eax]
mov byte [esi + 0xc4], al
mov edx, dword [esi + 0x370]
mov byte [edx], 0xa1
mov byte [edx + 1], 0x2c
movzx eax, byte [edx]
mov ecx, eax
or ecx, 0x4c
and eax, 0x4c
xor ecx, 0xffffffff
or eax, ecx
add al, 0x68
mov byte [edx], al
movzx eax, byte [edx + 1]
mov ecx, eax
or ecx, 0x4b
and eax, 0x4b
xor ecx, 0xffffffff
or eax, ecx
add al, 0x68
mov byte [edx + 1], al
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], edx
mov dword [esp + 8], 2
call fcn.00401e50
add esp, 0xc
cmp eax, 0
je 0x40f084
mov eax, dword [esi + 0x368]
mov al, byte [eax]
mov byte [esi + 0xc8], al
mov eax, dword [esi + 0xa8]
mov byte [eax], 0x2f
mov byte [eax + 1], 0x4c
movzx eax, byte [eax]
mov ecx, eax
or ecx, 0x80d7e2d3
mov edx, eax
xor edx, 0xffffffff
or edx, 0x2c
xor eax, 0xffffffff
or eax, 0x2c
and eax, edx
add eax, 1
add eax, ecx
add eax, 0xf940e967
mov ecx, eax
shl ecx, 1
and ecx, 0x70
xor eax, 0x38
add eax, ecx
add al, 0xc9
mov ecx, dword [esi + 0xa8]
mov byte [ecx], al
movzx eax, byte [ecx + 1]
mov ecx, eax
or ecx, 0x80d7e2d4
mov edx, eax
xor edx, 0xffffffff
or edx, 0x2b
xor eax, 0xffffffff
or eax, 0x2b
and eax, edx
add eax, 1
add eax, ecx
add eax, 0xf940e967
mov ecx, eax
shl ecx, 1
and ecx, 0x70
xor eax, 0x38
add eax, ecx
add al, 0xc9
mov ecx, dword [esi + 0xa8]
mov byte [ecx + 1], al
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], ecx
mov dword [esp + 8], 3
call fcn.00401e50
add esp, 0xc
cmp eax, 0
je 0x40f084
mov eax, dword [esi + 0x364]
mov al, byte [eax]
mov byte [esi + 0xcc], al
mov eax, dword [esi + 0x64]
mov byte [eax], 0xd9
mov byte [eax + 1], 0xe3
mov byte [eax + 2], 0x71
xor eax, eax
cmp eax, 3
jae 0x40f04e
mov ecx, dword [esi + 0x64]
movzx edx, byte [ecx + eax]
mov dword [esi + 0x30], eax
mov ecx, dword [esi + 0x30]
add ecx, 0xc6fc6347
mov edi, dword [esi + 0x30]
add edi, 0x47
and edi, edx
mov eax, edi
and eax, 0xfd
mov ebx, edi
or ebx, 0xfffffffd
add ebx, 1
imul ebx, eax
mov eax, edi
and eax, 2
or edi, 2
imul edi, eax
sub ebx, edi
add ecx, edx
add ecx, ebx
mov edx, ecx
add edx, 0xc81ce5c7
mov edi, edx
and edi, 1
and edx, 1
xor edx, 0xffffffff
add ecx, 0xc9
add ecx, edx
add ecx, edi
mov edi, dword [esi]
mov eax, dword [esi + 0x30]
mov edx, dword [esi + 0x64]
mov byte [edx + eax], cl
mov eax, dword [esi + 0x30]
add eax, 1
jmp 0x40efdb
sub esp, 0xc
mov dword [esp], edi
mov eax, dword [esi + 0x64]
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e50
add esp, 0xc
cmp eax, 0
setne al
and al, 0xff
or al, 0
xor al, 0xff
test al, 1
mov ecx, dword [esi + 4]
jne 0x411998
jmp 0x40f08c
mov ecx, dword [esi + 4]
jmp 0x411998
mov eax, dword [esi + 0x35c]
mov al, byte [eax]
mov byte [esi + 0xd0], al
mov ecx, dword [esi + 0x360]
mov byte [ecx], 0xbb
mov byte [ecx + 1], 0x2c
mov al, byte [ecx]
xor al, 0xb3
add al, 0x68
mov byte [ecx], al
mov al, byte [ecx + 1]
xor al, 0xb4
add al, 0x68
mov byte [ecx + 1], al
sub esp, 8
mov dword [esp + 4], ecx
mov dword [esp], edi
call fcn.00401890
add esp, 8
mov dword [esi + 0x1ac], eax
mov eax, dword [esi + 0x358]
mov al, byte [eax]
mov byte [esi + 0xd4], al
mov edx, dword [esi + 0x1c8]
mov byte [edx], 4
mov byte [edx + 1], 0x7a
mov al, byte [edx]
mov cl, al
and cl, 0x71
add cl, cl
sub al, cl
add al, 0x69
mov byte [edx], al
movzx eax, byte [edx + 1]
mov edx, eax
and edx, 2
mov edi, edx
xor edi, 2
mov ecx, eax
and ecx, 0xfffffff0
mov dword [esi + 0x68], ecx
mov ebx, dword [esi + 0x68]
imul ebx, edi
mov dword [esi + 0x68], ebx
mov edi, dword [esi]
or ecx, 2
imul ecx, edx
add ecx, dword [esi + 0x68]
sub al, cl
add al, 0x6a
mov ecx, dword [esi + 0x1c8]
mov byte [ecx + 1], al
sub esp, 8
mov dword [esp + 4], ecx
mov dword [esp], edi
call fcn.00401aa0
add esp, 8
mov dword [esi + 0x1b4], eax
mov eax, dword [esi + 0x350]
mov al, byte [eax]
mov byte [esi + 0xd8], al
mov edx, dword [esi + 0x354]
mov byte [edx], 0xf
mov byte [edx + 1], 0x86
movzx eax, byte [edx]
mov ecx, eax
xor ecx, 0xed
add ecx, 0x97
and eax, 1
or ecx, 1
add eax, ecx
mov byte [edx], al
movzx ecx, byte [edx + 1]
mov eax, ecx
not eax
xor ecx, 0xee
add ecx, 0x97
and eax, 1
or ecx, 1
add eax, ecx
mov byte [edx + 1], al
sub esp, 8
mov dword [esp + 4], edx
mov dword [esp], edi
call fcn.00401890
add esp, 8
mov dword [esi + 0x234], eax
mov eax, dword [esi + 0x348]
mov al, byte [eax]
mov byte [esi + 0xdc], al
mov ecx, dword [esi + 0x34c]
mov byte [ecx], 0x97
mov byte [ecx + 1], 0x74
mov al, byte [ecx]
xor al, 0x2b
add al, 0xa8
mov byte [ecx], al
mov al, byte [ecx + 1]
xor al, 0x2c
add al, 0xa8
mov byte [ecx + 1], al
sub esp, 8
mov dword [esp + 4], ecx
mov dword [esp], edi
call fcn.00401990
add esp, 8
fnstcw word [esi + 0x2c]
movzx eax, word [esi + 0x2c]
or eax, 0xc00
mov word [esi + 0x17c], ax
fldcw word [esi + 0x17c]
fistp dword [esi + 0x3a0]
fldcw word [esi + 0x2c]
mov eax, dword [esi + 0x3a0]
mov dword [esi + 0x23c], eax
mov eax, dword [esi + 0x340]
mov al, byte [eax]
mov byte [esi + 0xe0], al
mov ebx, dword [esi + 0x344]
mov byte [ebx], 0xd8
mov byte [ebx + 1], 0xec
mov byte [ebx + 2], 0x60
xor eax, eax
cmp eax, 3
jae 0x40f27d
movzx edx, byte [ebx + eax]
mov edi, eax
add edi, 0xc4f7c20e
mov ecx, eax
add ecx, 0xe
and ecx, edx
or edi, edx
xor ecx, edi
mov edi, dword [esi]
mov edx, ecx
shl edx, 1
and edx, 0x1e
xor ecx, 0x8f
add ecx, edx
add cl, 1
mov byte [ebx + eax], cl
add eax, 1
jmp 0x40f245
sub esp, 8
mov dword [esp + 4], ebx
mov dword [esp], edi
call fcn.00401990
add esp, 8
fnstcw word [esi + 0x2a]
movzx eax, word [esi + 0x2a]
or eax, 0xc00
mov word [esi + 0x17a], ax
fldcw word [esi + 0x17a]
fistp dword [esi + 0x39c]
fldcw word [esi + 0x2a]
mov eax, dword [esi + 0x39c]
mov dword [esi + 0x238], eax
mov eax, dword [esi + 0x33c]
mov al, byte [eax]
mov byte [esi + 0xe4], al
mov eax, dword [esi + 0x60]
mov byte [eax], 0x69
mov byte [eax + 1], 0x5c
mov byte [eax + 2], 0xc1
xor eax, eax
cmp eax, 3
jae 0x40f326
mov ecx, dword [esi + 0x60]
movzx edx, byte [ecx + eax]
mov dword [esi + 0x1d4], edx
mov ecx, eax
add ecx, 0x7616ec77
mov ebx, ecx
xor ebx, edx
xor ebx, 0xffffffff
mov edx, eax
add edx, 0x78
mov edi, 8
sub edi, eax
or edi, ebx
add edi, edx
shl edi, 1
add ecx, dword [esi + 0x1d4]
sub ecx, edi
mov edi, dword [esi]
add cl, 0x48
mov edx, dword [esi + 0x60]
mov byte [edx + eax], cl
add eax, 1
jmp 0x40f2db
sub esp, 8
mov dword [esp], edi
mov eax, dword [esi + 0x60]
mov dword [esp + 4], eax
call fcn.00401ba0
add esp, 8
cmp eax, 0
setg byte [esi + 0x1a]
sub esp, 4
mov eax, dword [esi + 0x1ac]
mov dword [esp], eax
call fcn.00413e40
add esp, 4
mov dword [esi + 0x1a0], eax
add eax, 1
mov ecx, 2
mov dword [esi + 0x1d8], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f37b
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
mov edi, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], edi
mov eax, dword [esi + 0x1d8]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1ac]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a9b0
add esp, 0x10
xor eax, eax
sub esp, 0x18
mov dword [esp], 0
mov dword [esi + 0x34], edi
mov dword [esp + 4], edi
mov eax, dword [esi + 0x1a0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0xa4]
mov dword [esp + 0x14], eax
call dword [0x446b2c]
mov dword [esi + 0x208], eax
mov eax, dword [esi + 0x334]
mov cl, byte [eax]
mov byte [esi + 0xe8], cl
mov eax, dword [esi + 0x338]
mov byte [eax], 0x50
mov byte [eax + 1], 0x74
mov byte [eax + 2], 0x75
mov byte [eax + 3], 0x36
movzx ecx, byte [eax]
mov edi, ecx
add edi, 1
mov edx, ecx
xor edx, 0xffffffff
or edx, 0x67bc4f2b
add edx, edi
shl edx, 1
add ecx, 0x67bc4f2b
sub ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x4e
xor ecx, 0xa7
add ecx, edx
add cl, 1
mov byte [eax], cl
movzx ecx, byte [eax + 1]
mov edi, ecx
add edi, 1
mov edx, ecx
xor edx, 0xffffffff
or edx, 0x67bc4f2c
add edx, edi
shl edx, 1
add ecx, 0x67bc4f2c
sub ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x4e
xor ecx, 0xa7
add ecx, edx
add cl, 1
mov byte [eax + 1], cl
movzx ecx, byte [eax + 2]
mov edi, ecx
add edi, 1
mov edx, ecx
xor edx, 0xffffffff
or edx, 0x67bc4f2d
add edx, edi
shl edx, 1
add ecx, 0x67bc4f2d
sub ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x4e
xor ecx, 0xa7
add ecx, edx
add cl, 1
mov byte [eax + 2], cl
movzx ecx, byte [eax + 3]
mov edi, ecx
add edi, 1
mov edx, ecx
xor edx, 0xffffffff
or edx, 0x67bc4f2e
add edx, edi
shl edx, 1
add ecx, 0x67bc4f2e
sub ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x4e
xor ecx, 0xa7
add ecx, edx
add cl, 1
mov byte [eax + 3], cl
mov ecx, dword [eax]
cmp dword [esi + 0x208], ecx
je 0x40f514
jmp 0x40f4fb
sub esp, 4
mov eax, dword [esi + 0x34]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
mov ecx, dword [esi + 4]
jmp 0x40f795
mov eax, dword [esi + 0xa4]
mov eax, dword [eax]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f532
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
mov edi, eax
mov eax, dword [0x446b2c]
mov dword [esi + 0x1d0], eax
mov eax, dword [esi + 0xa4]
mov ecx, dword [eax]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov edx, dword [esi + 0x34]
mov dword [esp + 4], edx
mov edx, dword [esi + 0x1a0]
mov dword [esp + 8], edx
mov dword [esi + 0x1a4], edi
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
call dword [esi + 0x1d0]
cmp eax, 0
setge al
test al, 1
jne 0x40f5b1
jmp 0x40f596
jmp 0x40f598
sub esp, 4
mov eax, dword [esi + 0x34]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
mov ecx, dword [esi + 4]
jmp 0x40f793
jmp 0x40f5b3
sub esp, 4
mov eax, dword [esi + 0x34]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
mov ebx, dword [esi + 0x234]
sub esp, 4
mov dword [esp], ebx
call fcn.00413e40
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 0x40f5f5
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x18c], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040a9b0
add esp, 0xc
mov ecx, dword [esi + 0x5c]
mov dword [esp], 1
call fcn.00408f80
xor edi, edi
mov ebx, dword [esi + 0x1b4]
sub esp, 4
mov dword [esp], ebx
call fcn.00401f50
add esp, 4
cmp edi, eax
jb 0x40f657
jmp 0x40f754
sub esp, 8
mov dword [esp], ebx
mov dword [esi + 0x1dc], edi
mov dword [esp + 4], edi
call fcn.00401f30
add esp, 4
mov dword [esp], eax
call fcn.00401970
add esp, 4
mov edi, eax
cmp edi, 0
jne 0x40f686
jmp 0x40f739
sub esp, 4
mov dword [esp], edi
call fcn.00413e40
add esp, 4
add eax, 1
mov ecx, 2
mov ebx, eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f6af
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
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.0040a9b0
sub esp, 0xc
mov eax, dword [esi + 0x23c]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x238]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edi
mov eax, dword [esi + 0x1a4]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x18c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x5c]
mov dword [esp], eax
xor eax, eax
mov cl, byte [esi + 0x1a]
mov al, cl
and eax, 1
mov dword [esp + 0x18], eax
call fcn.0041ef40
add esp, 0x1c
sub esp, 4
mov dword [esp], edi
call fcn.004082b0
add esp, 4
jmp 0x40f737
jmp 0x40f739
mov edi, dword [esi + 0x1dc]
mov eax, edi
and eax, 1
or edi, 1
add edi, eax
mov ebx, dword [esi + 0x1b4]
jmp 0x40f640
sub esp, 4
mov eax, dword [esi + 0x18c]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
mov eax, dword [esi + 0x1a4]
jmp 0x40f770
jmp 0x40f772
sub esp, 4
mov dword [esp], eax
call fcn.004082b0
add esp, 4
mov ecx, dword [esi + 0x5c]
call fcn.004099f0
mov ecx, dword [esi + 0x5c]
call fcn.00409060
mov ecx, dword [esi + 4]
jmp 0x40f795
jmp 0x411998
mov eax, dword [esi + 0x32c]
mov al, byte [eax]
mov byte [esi + 0xec], al
mov edx, dword [esi + 0x330]
mov byte [edx], 0xf9
mov byte [edx + 1], 0x5f
movzx eax, byte [edx]
mov ecx, eax
or ecx, 0xd1
and eax, 0x2e5726d1
xor ecx, 0xffffffff
or eax, ecx
add al, 0x90
mov byte [edx], al
movzx eax, byte [edx + 1]
mov ecx, eax
or ecx, 0xd0
and eax, 0x2e5726d0
xor ecx, 0xffffffff
or eax, ecx
add al, 0x90
mov byte [edx + 1], al
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], edx
mov dword [esp + 8], 2
call fcn.00401e50
add esp, 0xc
cmp eax, 0
je 0x40fb13
mov eax, dword [esi + 0x324]
mov al, byte [eax]
mov byte [esi + 0xf0], al
mov edi, dword [esi + 0x328]
mov byte [edi], 0x3e
mov byte [edi + 1], 0xaf
movzx ecx, byte [edi]
mov eax, ecx
or eax, 0x971e325e
mov edx, ecx
add edx, 1
xor ecx, 0xffffffff
or ecx, 0x971e325e
add ecx, edx
sub eax, ecx
add al, 0x10
mov byte [edi], al
movzx ecx, byte [edi + 1]
mov eax, ecx
or eax, 0x971e325f
mov edx, ecx
add edx, 1
xor ecx, 0xffffffff
or ecx, 0x971e325f
add ecx, edx
sub eax, ecx
add al, 0x10
mov byte [edi + 1], al
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov dword [esp + 4], edi
mov edi, dword [esi]
mov dword [esp + 8], 2
call fcn.00401e50
add esp, 0xc
cmp eax, 0
je 0x40fb13
mov eax, dword [esi + 0x31c]
mov al, byte [eax]
mov byte [esi + 0xf4], al
mov edx, dword [esi + 0x320]
mov byte [edx], 0xc2
mov byte [edx + 1], 0x50
movzx eax, byte [edx]
mov ecx, eax
and ecx, 0xa16cd467
add eax, 0xa16cd467
shl ecx, 1
sub eax, ecx
add al, 0xc8
mov byte [edx], al
movzx eax, byte [edx + 1]
mov ecx, eax
and ecx, 0xa16cd468
add eax, 0xa16cd468
shl ecx, 1
sub eax, ecx
add al, 0xc8
mov byte [edx + 1], al
sub esp, 0xc
mov dword [esp], edi
mov dword [esp + 4], edx
mov dword [esp + 8], 5
call fcn.00401e50
add esp, 0xc
cmp eax, 0
je 0x40fb13
mov eax, dword [esi + 0x318]
mov al, byte [eax]
mov byte [esi + 0xf8], al
mov eax, dword [esi + 0xa0]
mov byte [eax], 0xa1
mov byte [eax + 1], 0x2c
movzx edx, byte [eax]
mov eax, edx
or eax, 0xfb00144c
mov edi, edx
and edi, 0x4c
mov ecx, edx
xor ecx, 0x4ffebb3
add ecx, edx
add eax, 0x9ffd766
sub ecx, edi
mov edx, 0x4ffebb1
sub edx, eax
and ecx, edx
mov eax, ecx
add eax, 0xd800a267
mov edi, ecx
add edi, 0x5800a268
mov edx, 0x27ff5d98
sub edx, ecx
or edx, 1
add edx, edi
shl edx, 1
mov ecx, eax
and ecx, edx
or eax, edx
xor eax, 1
add eax, ecx
mov ecx, dword [esi + 0xa0]
mov byte [ecx], al
movzx edx, byte [ecx + 1]
mov eax, edx
or eax, 0xfb00144b
mov edi, edx
and edi, 0x4b
mov ecx, edx
xor ecx, 0x4ffebb4
add ecx, edx
add eax, 0x9ffd767
sub ecx, edi
mov edx, 0x4ffebb1
sub edx, eax
and ecx, edx
mov eax, ecx
add eax, 0xd800a267
mov edi, ecx
add edi, 0x5800a268
mov edx, 0x27ff5d98
sub edx, ecx
or edx, 1
add edx, edi
shl edx, 1
mov ecx, eax
and ecx, edx
or eax, edx
xor eax, 1
add eax, ecx
mov ecx, dword [esi + 0xa0]
mov byte [ecx + 1], al
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 2
call fcn.00401e50
add esp, 0xc
cmp eax, 0
je 0x40fb13
mov eax, dword [esi + 0x310]
mov al, byte [eax]
mov byte [esi + 0xfc], al
mov edi, dword [esi + 0x314]
mov byte [edi], 0x7a
mov byte [edi + 1], 0xdf
movzx eax, byte [edi]
xor eax, 0x9f75ea59
mov ecx, eax
and ecx, 0x54bbbef7
shl ecx, 1
add eax, 0x54bbbef7
sub eax, ecx
mov edx, eax
add edx, 1
mov ecx, eax
xor ecx, 0xffffffff
or ecx, 0xf
add ecx, edx
shl ecx, 1
xor eax, 0x8f
add eax, ecx
add al, 1
mov byte [edi], al
movzx eax, byte [edi + 1]
xor eax, 0x9f75ea59
mov ecx, eax
and ecx, 0x54bbbef6
shl ecx, 1
add eax, 0x54bbbef6
sub eax, ecx
mov edx, eax
add edx, 1
mov ecx, eax
xor ecx, 0xffffffff
or ecx, 0xf
add ecx, edx
shl ecx, 1
xor eax, 0x8f
add eax, ecx
add al, 1
mov byte [edi + 1], al
sub esp, 0xc
mov eax, dword [esi]
mov dword [esp], eax
mov dword [esp + 4], edi
mov edi, dword [esi]
mov dword [esp + 8], 3
call fcn.00401e50
add esp, 0xc
cmp eax, 0
je 0x40fb13
mov eax, dword [esi + 0x30c]
mov al, byte [eax]
mov byte [esi + 0x100], al
mov eax, dword [esi + 0x9c]
mov byte [eax], 8
mov byte [eax + 1], 0x3c
mov byte [eax + 2], 0x90
xor eax, eax
cmp eax, 3
jae 0x40fae1
mov edi, dword [esi + 0x9c]
mov cl, byte [edi + eax]
mov dl, al
add dl, 0x5e
xor dl, cl
add dl, 0x10
mov byte [edi + eax], dl
mov edi, dword [esi]
add eax, 1
jmp 0x40fabf
sub esp, 0xc
mov eax, dword [esi + 0x9c]
mov dword [esp + 4], eax
mov dword [esp], edi
mov dword [esp + 8], 3
call fcn.00401e50
add esp, 0xc
test eax, eax
sete al
test al, 1
mov ecx, dword [esi + 4]
jne 0x411998
jmp 0x40fb1b
mov ecx, dword [esi + 4]
jmp 0x411998
mov eax, dword [esi + 0x304]
mov al, byte [eax]
mov byte [esi + 0x104], al
mov ecx, dword [esi + 0x308]
mov byte [ecx], 0xb4
mov byte [ecx + 1], 0x54
movzx eax, byte [ecx]
xor eax, 0xb
add al, 0xa8
mov byte [ecx], al
movzx eax, byte [ecx + 1]
xor eax, 0xc
add al, 0xa8
mov byte [ecx + 1], al
sub esp, 8
mov dword [esp + 4], ecx
mov dword [esp], edi
call fcn.00401890
add esp, 8
mov dword [esi + 0x1b0], eax
mov eax, dword [esi + 0x2fc]
mov al, byte [eax]
mov byte [esi + 0x108], al
mov edx, dword [esi + 0x300]
mov byte [edx], 9
mov byte [edx + 1], 0x7a
movzx ecx, byte [edx]
mov eax, ecx
and eax, 0xfffffff1
or ecx, 0xf1
xor eax, ecx
add al, 0x78
mov byte [edx], al
movzx ecx, byte [edx + 1]
mov eax, ecx
and eax, 0xfffffff2
or ecx, 0xf2
xor eax, ecx
add al, 0x78
mov byte [edx + 1], al
sub esp, 8
mov dword [esp + 4], edx
mov dword [esp], edi
call fcn.00401890
add esp, 8
mov dword [esi + 0x240], eax
mov eax, dword [esi + 0x2f4]
mov al, byte [eax]
mov byte [esi + 0x10c], al
mov edi, dword [esi + 0x2f8]
mov byte [edi], 2
mov byte [edi + 1], 0x90
movzx eax, byte [edi]
xor eax, 0xfa24c3a7
add eax, 0x4834613
mov ecx, eax
and ecx, 0x2e8802c7
mov edx, eax
xor edx, 0x2ed9e2c7
lea ecx, [edx + ecx*2 - 0x4834613]
or eax, ecx
and eax, 1
or ecx, 1
add eax, ecx
mov byte [edi], al
movzx eax, byte [edi + 1]
xor eax, 0xfa24c3a8
add eax, 0x4834613
mov ecx, eax
and ecx, 0x2e8802c7
mov edx, eax
xor edx, 0x2ed9e2c7
lea ecx, [edx + ecx*2 - 0x4834613]
or eax, ecx
and eax, 1
or ecx, 1
add eax, ecx
mov byte [edi + 1], al
sub esp, 8
mov dword [esp + 4], edi
mov eax, dword [esi]
mov dword [esp], eax
call fcn.00401aa0
add esp, 8
mov dword [esi + 0x1c0], eax
mov eax, dword [esi + 0x2ec]
mov al, byte [eax]
mov byte [esi + 0x110], al
mov ecx, dword [esi + 0x2f0]
mov byte [ecx], 1
mov byte [ecx + 1], 0x8c
mov al, byte [ecx]
xor al, 0x13
add al, 0x68
mov byte [ecx], al
mov al, byte [ecx + 1]
xor al, 0x14
add al, 0x68
mov byte [ecx + 1], al
sub esp, 8
mov dword [esp + 4], ecx
mov eax, dword [esi]
mov dword [esp], eax
call fcn.00401890
add esp, 8
mov dword [esi + 0x24c], eax
mov eax, dword [esi + 0x2e8]
mov al, byte [eax]
mov byte [esi + 0x114], al
mov eax, dword [esi + 0x98]
mov byte [eax], 0x5c
mov byte [eax + 1], 0xb9
movzx ecx, byte [eax]
mov eax, ecx
and eax, 0x69
xor eax, 0x146a069
mov edx, ecx
not edx
or edx, 0xe2b00796
lea ecx, [ecx + edx + 1]
and ecx, 0xe3f6a7ff
or eax, ecx
mov edx, eax
xor edx, 0x34a91211
mov edi, eax
xor edi, 0x679719d1
mov ecx, edx
and ecx, 0x463113c0
xor ecx, 0xa4c1bc3f
and ecx, edi
and edx, 2
mov edi, edx
xor edi, 2
mov ebx, ecx
and ebx, 0xe6f1bffd
imul ebx, edi
or ecx, 2
imul ecx, edx
add ecx, ebx
mov edx, eax
xor edx, 0x2e
add edx, ecx
and eax, 1
xor edx, 1
lea eax, [edx + eax*2]
mov ecx, dword [esi + 0x98]
mov byte [ecx], al
movzx ecx, byte [ecx + 1]
mov eax, ecx
and eax, 0x69
xor eax, 0x146a069
mov edx, ecx
not edx
or edx, 0xe2b00796
lea ecx, [ecx + edx + 1]
and ecx, 0xe3f6a7ff
or eax, ecx
mov edx, eax
xor edx, 0x34a91210
mov edi, eax
xor edi, 0x679719d0
mov ecx, edx
and ecx, 0x463113c0
xor ecx, 0xa4c1bc3f
and ecx, edi
and edx, 2
mov edi, edx
xor edi, 2
mov ebx, ecx
and ebx, 0xe6f1bffd
imul ebx, edi
mov edi, dword [esi]
or ecx, 2
imul ecx, edx
add ecx, ebx
xor eax, 0x9868e62f
mov edx, eax
add edx, ecx
and eax, 1
xor edx, 1
lea eax, [edx + eax*2]
mov ecx, dword [esi + 0x98]
mov byte [ecx + 1], al
sub esp, 8
mov dword [esp + 4], ecx
mov dword [esp], edi
call fcn.00401990
add esp, 8
fnstcw word [esi + 0x28]
movzx eax, word [esi + 0x28]
or eax, 0xc00
mov word [esi + 0x178], ax
fldcw word [esi + 0x178]
fistp dword [esi + 0x3a8]
fldcw word [esi + 0x28]
mov eax, dword [esi + 0x3a8]
mov dword [esi + 0x248], eax
mov eax, dword [esi + 0x2e0]
mov al, byte [eax]
mov byte [esi + 0x118], al
mov ebx, dword [esi + 0x2e4]
mov byte [ebx], 0xa4
mov byte [ebx + 1], 0x50
mov byte [ebx + 2], 0xc4
xor eax, eax
cmp eax, 3
jae 0x40fe3e
movzx edx, byte [ebx + eax]
mov ecx, eax
add ecx, 0x6d4b952
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
sub ecx, edi
mov edi, dword [esi]
add cl, 0x70
mov byte [ebx + eax], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40fe0d
sub esp, 8
mov dword [esp + 4], ebx
mov dword [esp], edi
call fcn.00401990
add esp, 8
fnstcw word [esi + 0x26]
movzx eax, word [esi + 0x26]
or eax, 0xc00
mov word [esi + 0x176], ax
fldcw word [esi + 0x176]
fistp dword [esi + 0x3a4]
fldcw word [esi + 0x26]
mov eax, dword [esi + 0x3a4]
mov dword [esi + 0x244], eax
sub esp, 4
mov eax, dword [esi + 0x1b0]
mov dword [esp], eax
call fcn.00413e40
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 0x40feaf
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
mov ebx, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], ebx
mov dword [esp + 4], edi
mov eax, dword [esi + 0x1b0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a9b0
add esp, 0x10
mov ecx, dword [esi + 0x58]
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], ebx
call fcn.00436e00
sub esp, 4
mov dword [esp], ebx
call fcn.004082b0
add esp, 4
mov edi, dword [esi + 0x58]
jmp 0x40ff21
sub esp, 4
mov ecx, edi
mov dword [esp], 0x1000
call fcn.00436f80
cmp eax, 0
jge 0x40ff3c
jmp 0x41068e
mov eax, dword [esi + 0x94]
mov dword [eax], 0
mov eax, dword [edi]
mov dword [esi + 0x210], eax
mov al, byte [esi + 0x11c]
mov byte [esi + 0x174], al
mov byte [esi + 0xb], 0x80
mov byte [esi + 0xc], 0x8f
mov byte [esi + 0xd], 0x8e
mov byte [esi + 0xe], 0x8d
movzx eax, byte [esi + 0xb]
xor eax, 0xdf2d6837
add eax, 0x694be47
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [esi + 0xb], al
movzx eax, byte [esi + 0xc]
xor eax, 0xdf2d6838
add eax, 0x694be47
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [esi + 0xc], al
movzx eax, byte [esi + 0xd]
xor eax, 0xdf2d6839
add eax, 0x694be47
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [esi + 0xd], al
movzx eax, byte [esi + 0xe]
xor eax, 0xdf2d683a
add eax, 0x694be47
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [esi + 0xe], al
mov edi, dword [esi + 0xb]
xor ebx, ebx
mov ecx, 2
cmp ebx, dword [0x446b30]
jb 0x40fff7
jmp 0x41008b
mov ecx, dword [0x446b34]
cmp dword [ecx + ebx*8], 0x4947caf6
sete dl
test dl, 1
jne 0x41000e
jmp 0x41007a
mov byte [esi + 0x13], dl
mov ecx, dword [ecx + ebx*8 + 4]
cmp ecx, edi
jne 0x410023
mov ecx, 2
mov dl, byte [esi + 0x13]
jmp 0x41007c
mov eax, dword [0x446b38]
xor edx, edx
sub esp, 0x20
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 0x14
mov eax, dword [esi + 0x210]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov eax, dword [esi + 0x94]
mov dword [esp + 0x1c], eax
call fcn.004383c0
add esp, 0x20
mov ecx, 1
mov dl, byte [esi + 0x13]
jmp 0x41007c
xor ecx, ecx
test dl, 1
je 0x410083
jmp 0x41008b
add ebx, 1
jmp 0x40ffe5
cmp ecx, 2
je 0x410092
mov edi, eax
mov eax, dword [esi + 0x2d8]
mov al, byte [eax]
mov byte [esi + 0x120], al
mov edx, dword [esi + 0x2dc]
mov byte [edx], 0x71
mov byte [edx + 1], 0x76
mov byte [edx + 2], 0x77
mov byte [edx + 3], 8
movzx ecx, byte [edx]
mov eax, ecx
or eax, 0xcb1d5f9d
xor ecx, 0xffffffff
or ecx, 0x62
and eax, ecx
add eax, 0xa7150317
mov ecx, eax
shl ecx, 1
and ecx, 0xbe
xor eax, 0xa0
sub ecx, eax
add cl, 0xa1
mov byte [edx], cl
movzx ecx, byte [edx + 1]
mov eax, ecx
or eax, 0xcb1d5f9e
xor ecx, 0xffffffff
or ecx, 0x61
and eax, ecx
add eax, 0xa7150317
mov ecx, eax
shl ecx, 1
and ecx, 0xbe
xor eax, 0xa0
sub ecx, eax
add cl, 0xa1
mov byte [edx + 1], cl
movzx ecx, byte [edx + 2]
mov eax, ecx
or eax, 0xcb1d5f9f
xor ecx, 0xffffffff
or ecx, 0x60
and eax, ecx
add eax, 0xa7150317
mov ecx, eax
shl ecx, 1
and ecx, 0xbe
xor eax, 0xa0
sub ecx, eax
add cl, 0xa1
mov byte [edx + 2], cl
movzx ecx, byte [edx + 3]
mov eax, ecx
or eax, 0xcb1d5fa0
xor ecx, 0xffffffff
or ecx, 0x5f
and eax, ecx
add eax, 0xa7150317
mov ecx, eax
shl ecx, 1
and ecx, 0xbe
xor eax, 0xa0
sub ecx, eax
add cl, 0xa1
mov byte [edx + 3], cl
mov eax, dword [edx]
cmp edi, eax
jne 0x41068e
mov edi, dword [esi + 0x94]
mov eax, dword [edi]
add eax, 2
sub esp, 4
mov dword [esp], eax
call fcn.00436db0
add esp, 4
mov dword [esi + 0x7c], eax
mov eax, dword [edi]
add eax, 2
mov dword [esi + 0x214], eax
mov eax, dword [esi + 0x58]
mov eax, dword [eax]
mov dword [esi + 0x20c], eax
mov al, byte [esi + 0x124]
mov byte [esi + 0x170], al
mov byte [esi + 0xf], 0x80
mov byte [esi + 0x10], 0x8f
mov byte [esi + 0x11], 0x8e
mov byte [esi + 0x12], 0x8d
movzx eax, byte [esi + 0xf]
xor eax, 0xdf2d6837
add eax, 0x694be47
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [esi + 0xf], al
movzx eax, byte [esi + 0x10]
xor eax, 0xdf2d6838
add eax, 0x694be47
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [esi + 0x10], al
movzx eax, byte [esi + 0x11]
xor eax, 0xdf2d6839
add eax, 0x694be47
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [esi + 0x11], al
movzx eax, byte [esi + 0x12]
xor eax, 0xdf2d683a
add eax, 0x694be47
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [esi + 0x12], al
mov edx, dword [esi + 0xf]
xor edi, edi
mov ecx, 2
cmp edi, dword [0x446b30]
jb 0x410252
jmp 0x4102e4
mov dword [esi + 0x6c], edx
mov edx, dword [0x446b34]
cmp dword [edx + edi*8], 0x4947caf6
sete bl
xor ecx, ecx
test bl, 1
jne 0x41026e
jmp 0x4102cf
mov ecx, dword [edx + edi*8 + 4]
cmp ecx, dword [esi + 0x6c]
jne 0x41027e
mov ecx, 2
jmp 0x4102cf
mov eax, dword [0x446b38]
xor edx, edx
sub esp, 0x20
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 0x14
mov eax, dword [esi + 0x20c]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esi + 0x7c]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x214]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
call fcn.004383c0
add esp, 0x20
mov ecx, 1
test bl, 1
je 0x4102d9
mov edx, dword [esi + 0x6c]
jmp 0x4102e4
add edi, 1
mov edx, dword [esi + 0x6c]
jmp 0x410240
cmp ecx, 2
je 0x4102eb
mov edx, eax
cmp edx, 0
setge al
test al, 1
jne 0x4102fa
jmp 0x41067d
sub esp, 4
mov ebx, dword [esi + 0x240]
mov dword [esp], ebx
call fcn.00413e40
add esp, 4
mov edi, eax
mov dword [esi + 0x200], edi
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410331
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x204], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040a9b0
add esp, 0x10
mov ecx, dword [esi + 0x7c]
mov edi, ecx
add edi, 4
mov eax, dword [ecx + 4]
movzx ecx, word [ecx]
shr ecx, 1
sub ecx, 1
shl ecx, 1
add eax, ecx
mov ebx, eax
jmp 0x410380
cmp ebx, dword [edi]
jb 0x410393
movzx ecx, word [ebx]
cmp ecx, 0x5c
jne 0x41038e
jmp 0x410397
add ebx, 0xfffffffe
jmp 0x410380
mov ebx, eax
jmp 0x410397
mov eax, dword [edi]
mov ecx, ebx
xor ecx, 0xffffffff
and ecx, eax
xor eax, 0xffffffff
and ebx, eax
sub ebx, ecx
sar ebx, 1
xor eax, eax
sub eax, ebx
xor ecx, ecx
sub ecx, dword [esi + 0x200]
add eax, ecx
xor ecx, ecx
sub ecx, eax
xor edx, edx
sub edx, ecx
add edx, 0xffffffff
xor eax, eax
sub eax, edx
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4103dc
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
mov ecx, dword [edi]
sub esp, 0xc
mov dword [esi + 0x1f0], eax
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
call fcn.00413ea0
add esp, 4
mov dword [esp], eax
mov edi, dword [esi + 0x204]
mov dword [esp + 4], edi
call fcn.00409d90
add esp, 8
mov ebx, eax
sub esp, 4
mov dword [esp], edi
call fcn.004082b0
add esp, 4
jmp 0x41042f
mov edi, dword [esi + 0x1f0]
sub ebx, edi
sar ebx, 1
sub ebx, 0xffffffff
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410454
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
sub esp, 4
mov dword [esp], edi
mov dword [esi + 0x198], eax
mov dword [esp + 4], eax
call fcn.00435330
add esp, 8
sub esp, 4
mov dword [esp], edi
call fcn.004082b0
add esp, 4
jmp 0x410487
sub esp, 4
mov ebx, dword [esi + 0x24c]
mov dword [esp], ebx
call fcn.00413e40
add esp, 4
mov edi, eax
mov eax, edi
and eax, 1
or edi, 1
add edi, eax
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4104bf
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x190], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040a9b0
add esp, 0xc
mov ecx, dword [esi + 0x90]
mov dword [esp], 1
call fcn.00408f80
xor edi, edi
sub esp, 4
mov eax, dword [esi + 0x1c0]
mov dword [esp], eax
call fcn.00401f50
add esp, 4
cmp edi, eax
jb 0x410524
jmp 0x41063d
sub esp, 8
mov eax, dword [esi + 0x1c0]
mov dword [esp], eax
mov dword [esi + 0x1e0], edi
mov dword [esp + 4], edi
call fcn.00401f30
add esp, 4
mov dword [esp], eax
call fcn.00401970
add esp, 4
mov dword [esi + 0x180], eax
cmp eax, 0
sete al
test al, 1
jne 0x41055f
jmp 0x410564
jmp 0x41062f
sub esp, 4
mov eax, dword [esi + 0x180]
mov dword [esp], eax
call fcn.00413e40
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 0x41059b
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
mov edi, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], edi
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x180]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a9b0
add esp, 0x10
xor eax, eax
sub esp, 0x1c
mov eax, dword [esi + 0x90]
mov dword [esp], eax
mov eax, dword [esi + 0x190]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x198]
mov dword [esp + 8], eax
mov ebx, edi
mov dword [esp + 0xc], edi
mov eax, dword [esi + 0x244]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x248]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.0041ef40
add esp, 0x1c
sub esp, 4
mov dword [esp], ebx
call fcn.004082b0
add esp, 4
jmp 0x41062d
jmp 0x41062f
mov edi, dword [esi + 0x1e0]
add edi, 1
jmp 0x410507
sub esp, 4
mov eax, dword [esi + 0x190]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
jmp 0x410653
sub esp, 4
mov eax, dword [esi + 0x198]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
mov edi, dword [esi + 0x90]
mov ecx, edi
call fcn.004099f0
mov ecx, edi
call fcn.00409060
jmp 0x41067d
sub esp, 4
mov eax, dword [esi + 0x7c]
mov dword [esp], eax
call fcn.00436dd0
add esp, 4
mov ecx, dword [esi + 0x58]
call fcn.00437050
mov ecx, dword [esi + 4]
jmp 0x411998
mov eax, dword [esi + 0x2d0]
mov al, byte [eax]
mov byte [esi + 0x128], al
mov edi, dword [esi + 0x2d4]
mov byte [edi], 0xb4
mov byte [edi + 1], 0x2f
movzx eax, byte [edi]
mov ecx, eax
and ecx, 0xffffffde
add ecx, ecx
neg ecx
lea eax, [eax + ecx - 0x10a7aa22]
mov ecx, eax
xor ecx, 0xf0
or eax, 0xf
mov edx, eax
and edx, ecx
add eax, edx
inc al
mov byte [edi], al
movzx eax, byte [edi + 1]
mov ecx, eax
and ecx, 0xffffffdf
add ecx, ecx
neg ecx
lea eax, [eax + ecx - 0x10a7aa21]
mov ecx, eax
xor ecx, 0xf0
or eax, 0xf
mov edx, eax
and edx, ecx
add eax, edx
inc al
mov byte [edi + 1], al
sub esp, 8
mov dword [esp + 4], edi
mov edi, dword [esi]
mov dword [esp], edi
call fcn.00401890
add esp, 8
mov dword [esi + 0x1e8], eax
mov eax, dword [esi + 0x2c8]
mov al, byte [eax]
mov byte [esi + 0x12c], al
mov edx, dword [esi + 0x2cc]
mov byte [edx], 0x83
mov byte [edx + 1], 0x14
movzx ecx, byte [edx]
xor ecx, 9
mov eax, ecx
and eax, 0x3d
add eax, eax
sub eax, ecx
add al, 0xea
mov byte [edx], al
movzx ecx, byte [edx + 1]
mov eax, ecx
xor eax, 0xc
xor ecx, 0xe
and eax, 0x3d
add eax, eax
sub eax, ecx
add al, 0xea
mov byte [edx + 1], al
sub esp, 8
mov dword [esp + 4], edx
mov dword [esp], edi
mov edi, dword [esi + 0x1e8]
call fcn.00401890
add esp, 8
test edi, edi
sete dl
mov dword [esi + 0x19c], eax
test eax, eax
sete cl
or dl, cl
test dl, 1
jne 0x41079c
jmp 0x4107a4
mov ecx, dword [esi + 4]
jmp 0x41119b
sub esp, 4
mov dword [esp], edi
call fcn.00413e40
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 0x4107cf
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x1bc], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a9b0
add esp, 0x10
mov eax, dword [esi + 0x2c0]
mov al, byte [eax]
mov byte [esi + 0x130], al
mov edx, dword [esi + 0x2c4]
mov byte [edx], 0xc8
mov byte [edx + 1], 0x6f
movzx eax, byte [edx]
mov ecx, eax
and ecx, 0xa2a0209e
shl ecx, 1
add eax, 0xa2a0209e
sub eax, ecx
add eax, 0xeafefb0f
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [edx], al
movzx eax, byte [edx + 1]
mov ecx, eax
and ecx, 0xa2a0209f
shl ecx, 1
add eax, 0xa2a0209f
sub eax, ecx
add eax, 0xeafefb0f
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [edx + 1], al
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00401890
add esp, 8
mov ebx, eax
cmp ebx, 0
setne al
mov dword [esi + 0x84], 0
test al, 1
jne 0x41089a
jmp 0x4108fe
sub esp, 4
mov dword [esp], ebx
call fcn.00413e40
add esp, 4
mov edi, eax
and edi, 1
or eax, 1
add edi, eax
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4108ca
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x84], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040a9b0
add esp, 0x10
mov eax, dword [esi + 0x19c]
sub esp, 4
mov dword [esp], eax
call fcn.00413e40
add esp, 4
mov edx, eax
and edx, 1
or eax, 1
add edx, eax
mov ecx, 2
mov dword [esi + 0x194], edx
mov eax, edx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41093a
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
mov edi, eax
xor eax, eax
sub esp, 0x10
mov dword [esp], edi
mov ebx, dword [esi + 0x194]
mov dword [esp + 4], ebx
mov eax, dword [esi + 0x19c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a9b0
add esp, 0x10
xor eax, eax
sub esp, 0x18
mov dword [esp], 0
mov dword [esi + 0x70], edi
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0x8c]
mov dword [esp + 0x14], eax
call dword [0x446b2c]
mov ecx, dword [esi + 0x2b8]
mov cl, byte [ecx]
mov byte [esi + 0x134], cl
mov edi, dword [esi + 0x2bc]
mov byte [edi], 0x6d
mov byte [edi + 1], 0x8f
mov byte [edi + 2], 0x70
mov byte [edi + 3], 0x31
movzx ecx, byte [edi]
xor ecx, 0xcc84ca7e
mov edx, ecx
shl edx, 1
and edx, 0x1e
xor ecx, 0xf
add ecx, edx
add cl, 1
mov byte [edi], cl
movzx ecx, byte [edi + 1]
xor ecx, 0xcc84ca7f
mov edx, ecx
shl edx, 1
and edx, 0x1e
xor ecx, 0xf
add ecx, edx
add cl, 1
mov byte [edi + 1], cl
movzx ecx, byte [edi + 2]
xor ecx, 0xcc84ca80
mov edx, ecx
shl edx, 1
and edx, 0x1e
xor ecx, 0xf
add ecx, edx
add cl, 1
mov byte [edi + 2], cl
movzx ecx, byte [edi + 3]
xor ecx, 0xcc84ca81
mov edx, ecx
shl edx, 1
and edx, 0x1e
xor ecx, 0xf
add ecx, edx
add cl, 1
mov byte [edi + 3], cl
cmp eax, dword [edi]
setne al
test al, 1
jne 0x410a49
jmp 0x410a64
jmp 0x410a4b
sub esp, 4
mov eax, dword [esi + 0x70]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
mov ecx, dword [esi + 4]
jmp 0x411199
mov eax, dword [esi + 0x8c]
mov eax, dword [eax]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410a82
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
mov ebx, dword [0x446b2c]
mov edi, dword [esi + 0x8c]
mov ecx, dword [edi]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov edx, dword [esi + 0x70]
mov dword [esp + 4], edx
mov edx, dword [esi + 0x194]
mov dword [esp + 8], edx
mov dword [esi + 0x80], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edi
call ebx
cmp eax, 0
jge 0x410b05
jmp 0x410ad6
sub esp, 4
mov eax, dword [esi + 0x70]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
jmp 0x410ae9
sub esp, 4
mov eax, dword [esi + 0x80]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
mov ecx, dword [esi + 4]
jmp 0x411197
mov eax, dword [esi + 0x2b0]
mov al, byte [eax]
mov byte [esi + 0x138], al
mov ebx, dword [esi + 0x2b4]
mov byte [ebx], 0x65
mov byte [ebx + 1], 0xfc
movzx eax, byte [ebx]
mov ecx, eax
and ecx, 0x47b95ae3
shl ecx, 1
add eax, 0x47b95ae3
sub eax, ecx
mov ecx, eax
xor ecx, 0x4975ae69
shl eax, 1
and eax, 0x6d14a32c
sub eax, ecx
mov edi, eax
add edi, 0x50
mov ecx, eax
and ecx, 1
mov edx, 0xf45528af
sub edx, eax
mov eax, edx
and eax, 0xe
and edi, 0xf1
or eax, edi
xor eax, 0xf
and edx, 1
xor edx, 1
or eax, edx
add ecx, eax
mov byte [ebx], cl
movzx eax, byte [ebx + 1]
mov ecx, eax
and ecx, 0x47b95ae4
shl ecx, 1
add eax, 0x47b95ae4
sub eax, ecx
mov ecx, eax
xor ecx, 0x4975ae69
shl eax, 1
and eax, 0x6d14a32c
sub eax, ecx
mov edi, eax
add edi, 0x50
mov ecx, eax
and ecx, 1
mov edx, 0xf45528af
sub edx, eax
mov eax, edx
and eax, 0xe
and edi, 0xf1
or eax, edi
xor eax, 0xf
and edx, 1
xor edx, 1
or eax, edx
add ecx, eax
mov byte [ebx + 1], cl
sub esp, 8
mov edi, dword [esi]
mov dword [esp], edi
mov dword [esp + 4], ebx
call fcn.00401890
add esp, 8
mov dword [esi + 0x3c], 0
cmp eax, 0
mov ebx, dword [esi + 0x2a4]
je 0x410c5f
sub esp, 4
mov dword [esi + 0x1ec], eax
mov dword [esp], eax
call fcn.00413e40
add esp, 4
mov edi, eax
mov eax, edi
and eax, 1
shl eax, 1
xor edi, 1
add edi, eax
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410c26
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x3c], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esi + 0x1ec]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a9b0
add esp, 0x10
mov edi, dword [esi]
mov eax, dword [esi + 0x2a8]
mov al, byte [eax]
mov byte [esi + 0x13c], al
mov edx, dword [esi + 0x2ac]
mov byte [edx], 0x70
mov byte [edx + 1], 0x99
movzx ecx, byte [edx]
mov eax, ecx
and eax, 0xa7
xor ecx, 0xffffffff
and ecx, 0x58
or eax, ecx
add al, 0x40
mov byte [edx], al
movzx ecx, byte [edx + 1]
mov eax, ecx
and eax, 0xa6
xor ecx, 0xffffffff
and ecx, 0x59
or eax, ecx
add al, 0x40
mov byte [edx + 1], al
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], edx
call fcn.00401ba0
add esp, 8
cmp eax, 0
setne al
and al, 1
mov byte [esi + 0x1b], al
mov eax, dword [esi + 0x2a0]
mov al, byte [eax]
mov byte [esi + 0x140], al
mov byte [ebx], 0x2a
mov byte [ebx + 1], 8
mov byte [ebx + 2], 0x81
xor eax, eax
cmp eax, 3
jae 0x410d12
movzx edx, byte [ebx + eax]
mov ecx, eax
add ecx, 0x37
mov edi, 0xc8
sub edi, eax
and edi, edx
xor edx, 0xffffffff
and ecx, edx
or ecx, edi
add cl, 0x48
mov byte [ebx + eax], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x410ce0
sub esp, 8
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.00401aa0
add esp, 8
xor ecx, ecx
cmp eax, 0
mov edx, 0
je 0x411075
sub esp, 4
mov dword [esi + 0x230], eax
mov dword [esp], eax
call fcn.00401f50
add esp, 4
mov ecx, 0xc
mov dword [esi + 0x20], eax
mul ecx
seto cl
add eax, 4
setb dl
and cl, cl
xor cl, 0xff
and dl, dl
xor dl, 0xff
and dl, cl
xor dl, 0xff
mov ecx, 0xffffffff
test dl, 1
jne 0x410d79
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
mov ecx, dword [esi + 0x20]
mov dword [eax], ecx
add eax, 4
mov dword [esi + 0x14], eax
cmp ecx, 0
je 0x410db6
imul eax, ecx, 0xc
mov edi, dword [esi + 0x14]
mov ebx, edi
add ebx, eax
jmp 0x410da3
mov ecx, edi
call fcn.00413f60
add edi, 0xc
cmp edi, ebx
jne 0x410da3
mov ecx, dword [esi + 0x20]
jmp 0x410db6
xor edx, edx
jmp 0x410dba
cmp edx, ecx
setb al
test al, 1
jne 0x410dcd
jmp 0x410dc5
mov edx, dword [esi + 0x14]
jmp 0x411075
sub esp, 8
mov eax, dword [esi + 0x230]
mov dword [esp], eax
mov dword [esi + 0x22c], edx
mov dword [esp + 4], edx
call fcn.00401f60
add esp, 8
mov dword [esi + 0x1a8], eax
mov eax, dword [esi + 0x29c]
mov al, byte [eax]
mov byte [esi + 0x144], al
mov eax, dword [esi + 0x54]
mov byte [eax], 0x2f
mov byte [eax + 1], 0x25
mov byte [eax + 2], 0xcc
xor eax, eax
cmp eax, 3
jae 0x410e5e
mov ecx, dword [esi + 0x54]
movzx ecx, byte [ecx + eax]
mov edx, eax
add edx, 0x8b3b901a
xor edx, ecx
mov ecx, edx
add ecx, 0xa6237f2f
mov edi, ecx
and edi, 1
mov ebx, 0x59dc80d0
sub ebx, edx
mov edx, ebx
and edx, 3
and ecx, 0xfc
or edx, ecx
and ebx, 1
xor ebx, 1
or edx, ebx
xor edx, 2
add edx, edi
mov ecx, dword [esi + 0x54]
mov byte [ecx + eax], dl
add eax, 1
jmp 0x410e0f
sub esp, 8
mov eax, dword [esi + 0x1a8]
mov dword [esp], eax
mov eax, dword [esi + 0x54]
mov dword [esp + 4], eax
call fcn.00401890
add esp, 8
mov dword [esi + 0x224], eax
mov eax, dword [esi + 0x298]
mov al, byte [eax]
mov byte [esi + 0x148], al
mov eax, dword [esi + 0x50]
mov byte [eax], 0x4b
mov byte [eax + 1], 0x75
mov byte [eax + 2], 0xd0
xor eax, eax
cmp eax, 3
jae 0x410ece
mov ecx, dword [esi + 0x50]
movzx edx, byte [ecx + eax]
mov ecx, eax
add ecx, 0x1e
mov edi, edx
xor edi, 0xffffffff
and ecx, edi
mov ebx, 0xe1
sub ebx, eax
and ebx, edx
or ebx, ecx
add bl, 0x10
mov ecx, dword [esi + 0x50]
mov byte [ecx + eax], bl
add eax, 1
jmp 0x410e9d
sub esp, 8
mov edi, dword [esi + 0x1a8]
mov dword [esp], edi
mov eax, dword [esi + 0x50]
mov dword [esp + 4], eax
call fcn.00401890
add esp, 8
mov dword [esi + 0x21c], eax
mov eax, dword [esi + 0x290]
mov al, byte [eax]
mov byte [esi + 0x14c], al
mov edx, dword [esi + 0x294]
mov byte [edx], 0xc2
mov byte [edx + 1], 0xcb
mov byte [edx + 2], 0xf2
mov byte [edx + 3], 0x51
movzx eax, byte [edx]
mov ecx, eax
xor ecx, 0xffffffff
and ecx, 0x9e
and eax, 0x61
or eax, ecx
add al, 0x10
mov byte [edx], al
movzx eax, byte [edx + 1]
mov ecx, eax
xor ecx, 0xffffffff
and ecx, 0x9f
and eax, 0x60
or eax, ecx
add al, 0x10
mov byte [edx + 1], al
movzx eax, byte [edx + 2]
mov ecx, eax
xor ecx, 0xffffffff
and ecx, 0xa0
and eax, 0x5f
or eax, ecx
add al, 0x10
mov byte [edx + 2], al
movzx eax, byte [edx + 3]
mov ecx, eax
xor ecx, 0xffffffff
and ecx, 0xa1
and eax, 0x5e
or eax, ecx
add al, 0x10
mov byte [edx + 3], al
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], edx
call fcn.00401ba0
add esp, 8
xor ebx, ebx
cmp eax, 0
setg bl
mov eax, dword [esi + 0x288]
mov al, byte [eax]
mov byte [esi + 0x150], al
mov edx, dword [esi + 0x28c]
mov byte [edx], 0x39
mov byte [edx + 1], 0x4e
mov byte [edx + 2], 0x3f
mov byte [edx + 3], 0xad
movzx eax, byte [edx]
mov ecx, eax
and ecx, 0xb380847a
shl ecx, 1
add eax, 0xb380847a
sub eax, ecx
add al, 0x30
mov byte [edx], al
movzx eax, byte [edx + 1]
mov ecx, eax
and ecx, 0xb380847b
shl ecx, 1
add eax, 0xb380847b
sub eax, ecx
add al, 0x30
mov byte [edx + 1], al
movzx eax, byte [edx + 2]
mov ecx, eax
and ecx, 0xb380847c
shl ecx, 1
add eax, 0xb380847c
sub eax, ecx
add al, 0x30
mov byte [edx + 2], al
movzx eax, byte [edx + 3]
mov ecx, eax
and ecx, 0xb380847d
shl ecx, 1
add eax, 0xb380847d
sub eax, ecx
add al, 0x30
mov byte [edx + 3], al
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], edx
call fcn.00401ba0
add esp, 8
xor edx, edx
cmp eax, 0
setg dl
mov edi, dword [esi + 0x22c]
imul eax, edi, 0xc
mov ecx, dword [esi + 0x14]
add ecx, eax
sub esp, 0x10
mov eax, dword [esi + 0x224]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x21c]
mov dword [esp], eax
and edx, 1
mov dword [esp + 0xc], edx
and ebx, 1
mov dword [esp + 8], ebx
call fcn.00413f80
mov edx, edi
add edx, 1
mov ecx, dword [esi + 0x20]
jmp 0x410dba
mov dword [esi + 0x20], ecx
mov dword [esi + 0x14], edx
mov edi, dword [esi + 0x284]
mov ecx, edi
call fcn.004140e0
mov eax, dword [esi + 0x1bc]
mov dword [edi], eax
mov eax, dword [esi + 0x84]
mov dword [edi + 4], eax
mov eax, dword [esi + 0x80]
mov dword [edi + 8], eax
mov eax, dword [esi + 0x3c]
mov dword [edi + 0xc], eax
mov al, byte [esi + 0x1b]
mov byte [edi + 0x10], al
sub esp, 4
mov ecx, dword [esi + 0x4c]
mov dword [esp], 2
call fcn.00408f80
sub esp, 0x10
mov eax, dword [esi + 0x4c]
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esi + 0x14]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x20]
mov dword [esp + 0xc], eax
call fcn.00414780
add esp, 0x10
mov ecx, dword [esi + 0x4c]
call fcn.004099f0
mov ecx, dword [esi + 0x14]
cmp ecx, 0
je 0x411127
mov ebx, ecx
add ebx, 0xfffffffc
imul eax, dword [ecx - 4], 0xc
mov edi, ecx
add edi, eax
cmp ecx, edi
je 0x411119
jmp 0x411106
add edi, 0xfffffff4
mov ecx, edi
call fcn.00414110
mov ecx, dword [esi + 0x14]
cmp edi, ecx
jne 0x411106
jmp 0x411119
sub esp, 4
mov dword [esp], ebx
call fcn.004082b0
add esp, 4
jmp 0x411129
sub esp, 4
mov eax, dword [esi + 0x1bc]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
jmp 0x41113f
sub esp, 4
mov eax, dword [esi + 0x80]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
mov eax, dword [esi + 0x84]
cmp eax, 0
je 0x41116c
sub esp, 4
mov dword [esp], eax
call fcn.004082b0
add esp, 4
cmp dword [esi + 0x3c], 0
sete al
test al, 1
jne 0x41118c
jmp 0x411179
sub esp, 4
mov eax, dword [esi + 0x3c]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
jmp 0x41118c
mov ecx, dword [esi + 0x4c]
call fcn.00409060
mov ecx, dword [esi + 4]
jmp 0x411199
jmp 0x41119b
jmp 0x411998
call fcn.00414290
mov eax, dword [esi + 0x27c]
mov al, byte [eax]
mov byte [esi + 0x154], al
mov ecx, dword [esi + 0x280]
mov byte [ecx], 0x15
mov byte [ecx + 1], 0x90
movzx eax, byte [ecx]
xor eax, 0xa7
add al, 0xc8
mov byte [ecx], al
movzx eax, byte [ecx + 1]
xor eax, 0xa8
add al, 0xc8
mov byte [ecx + 1], al
sub esp, 8
mov dword [esp + 4], ecx
mov dword [esp], edi
call fcn.00401890
add esp, 8
mov dword [esi + 0x1fc], eax
mov eax, dword [esi + 0x274]
mov al, byte [eax]
mov byte [esi + 0x158], al
call fcn.00414290
call fcn.00414290
mov edi, dword [esi + 0x278]
mov byte [edi], 0xca
call fcn.00414290
call fcn.00414290
mov byte [edi + 1], 0x5b
movzx eax, byte [edi]
mov edx, eax
xor edx, 0x28100280
or edx, 0x10009
mov ecx, eax
xor ecx, 1
or ecx, 0x28110282
and ecx, edx
or eax, 0x87220400
and ecx, 0x2811028b
and eax, 0x87220474
sub eax, ecx
mov ecx, eax
or ecx, 1
and eax, 1
sub ecx, eax
lea eax, [ecx + eax*2]
add al, 0x3a
mov byte [edi], al
movzx eax, byte [edi + 1]
mov edx, eax
xor edx, 0x28100280
or edx, 0x10008
mov ecx, eax
or ecx, 0x28110283
and ecx, edx
or eax, 0x87220400
and ecx, 0x2811028b
and eax, 0x87220474
sub eax, ecx
mov ecx, eax
or ecx, 1
and eax, 1
sub ecx, eax
lea eax, [ecx + eax*2]
add al, 0x3a
mov byte [edi + 1], al
sub esp, 8
mov dword [esp + 4], edi
mov edi, dword [esi + 0x1fc]
mov eax, dword [esi]
mov dword [esp], eax
call fcn.00401890
add esp, 8
test edi, edi
sete dl
mov dword [esi + 0x184], eax
test eax, eax
sete cl
or dl, cl
test dl, 1
jne 0x4112d5
jmp 0x4112dd
mov ecx, dword [esi + 4]
jmp 0x411996
sub esp, 4
mov dword [esp], edi
call fcn.00413e40
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 0x411308
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
xor ecx, ecx
sub esp, 0x10
mov dword [esi + 0x1b8], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a9b0
add esp, 0xc
mov eax, dword [esi + 0x184]
mov dword [esp], eax
call fcn.00413e40
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 0x41136a
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
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 + 0x184]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a9b0
add esp, 0x10
xor eax, eax
sub esp, 0x18
mov dword [esp], 0
mov dword [esi + 0x74], edi
mov dword [esp + 4], edi
mov dword [esi + 0x220], ebx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0x88]
mov dword [esp + 0x14], eax
call dword [0x446b2c]
mov ecx, dword [esi + 0x26c]
mov cl, byte [ecx]
mov byte [esi + 0x15c], cl
mov ebx, dword [esi + 0x270]
mov byte [ebx], 0x27
mov byte [ebx + 1], 0x45
mov byte [ebx + 2], 0x46
mov byte [ebx + 3], 0x87
movzx edi, byte [ebx]
xor edi, 0x3c376f64
mov ecx, edi
add ecx, 0xdf
mov edx, edi
and edx, 1
xor edx, 1
and edi, 1
xor edi, 1
or edx, edi
or ecx, 1
add edx, ecx
mov byte [ebx], dl
movzx edi, byte [ebx + 1]
xor edi, 0x3c376f65
mov ecx, edi
add ecx, 0xdf
mov edx, edi
and edx, 1
xor edx, 1
and edi, 1
xor edi, 1
or edx, edi
or ecx, 1
add edx, ecx
mov byte [ebx + 1], dl
movzx edi, byte [ebx + 2]
xor edi, 0x3c376f66
mov ecx, edi
add ecx, 0xdf
mov edx, edi
and edx, 1
xor edx, 1
and edi, 1
xor edi, 1
or edx, edi
or ecx, 1
add edx, ecx
mov byte [ebx + 2], dl
movzx edi, byte [ebx + 3]
xor edi, 0x3c376f67
mov ecx, edi
add ecx, 0xdf
mov edx, edi
and edx, 1
xor edx, 1
and edi, 1
xor edi, 1
or edx, edi
or ecx, 1
add edx, ecx
mov byte [ebx + 3], dl
mov ecx, dword [ebx]
cmp eax, ecx
je 0x4114c7
jmp 0x4114ae
sub esp, 4
mov eax, dword [esi + 0x74]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
mov ecx, dword [esi + 4]
jmp 0x411996
mov eax, dword [esi + 0x88]
mov eax, dword [eax]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4114e5
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
mov ecx, dword [0x446b2c]
mov dword [esi + 0x1cc], ecx
mov ecx, dword [esi + 0x88]
mov edi, dword [ecx]
xor edx, edx
sub esp, 0x18
mov dword [esp], 0
mov edx, dword [esi + 0x74]
mov dword [esp + 4], edx
mov edx, dword [esi + 0x220]
mov dword [esp + 8], edx
mov dword [esi + 0x78], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], ecx
call dword [esi + 0x1cc]
cmp eax, 0
jge 0x41156c
jmp 0x411540
sub esp, 4
mov eax, dword [esi + 0x74]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
jmp 0x411553
sub esp, 4
mov eax, dword [esi + 0x78]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
mov ecx, dword [esi + 4]
jmp 0x411994
mov eax, dword [esi + 0x264]
mov al, byte [eax]
mov byte [esi + 0x160], al
mov edx, dword [esi + 0x268]
mov byte [edx], 0xc8
mov byte [edx + 1], 0xa1
movzx eax, byte [edx]
mov ecx, eax
or ecx, 0x7fd28e5f
xor eax, 0xffffffff
or eax, 0x802d72a0
xor eax, ecx
mov byte [edx], al
movzx eax, byte [edx + 1]
mov ecx, eax
or ecx, 0x7fd28e5e
xor eax, 0xffffffff
or eax, 0x802d72a1
xor eax, ecx
mov byte [edx + 1], al
sub esp, 8
mov eax, dword [esi]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00401ba0
add esp, 8
cmp eax, 0
setne al
and al, 1
mov byte [esi + 0x19], al
mov eax, dword [esi + 0x260]
mov al, byte [eax]
mov byte [esi + 0x164], al
mov eax, dword [esi + 0x48]
mov byte [eax], 0xf7
mov byte [eax + 1], 0x83
mov byte [eax + 2], 0x1c
xor eax, eax
mov edi, dword [ebp + 8]
cmp eax, 3
jae 0x411683
mov ecx, dword [esi + 0x48]
movzx edi, byte [ecx + eax]
mov edx, eax
add edx, 0x1356b4a
mov ebx, 0x2ca94b5
sub ebx, eax
and ebx, 0xfeace788
and edx, 0x1531877
mov ecx, edi
xor ecx, 0xfeace788
xor edi, 0xfeace788
and ecx, edi
or edx, ebx
xor ecx, edx
mov edx, ecx
and edx, 0x1654a5ad
mov ebx, ecx
and ebx, 2
xor ebx, 2
mov edi, ecx
and edi, 0x1654a5ad
imul edi, ebx
mov ebx, ecx
and ebx, 2
or edx, 2
imul edx, ebx
add edx, edi
xor ecx, 0x1654a5af
mov ebx, ecx
add ebx, edx
shl ecx, 1
and ecx, 2
xor ebx, 1
add ebx, ecx
mov ecx, dword [esi + 0x48]
mov byte [ecx + eax], bl
mov edi, dword [ebp + 8]
add eax, 1
jmp 0x4115f7
sub esp, 8
mov dword [esp], edi
mov eax, dword [esi + 0x48]
mov dword [esp + 4], eax
call fcn.00401aa0
add esp, 8
xor ecx, ecx
cmp eax, 0
mov ebx, 0
je 0x41189a
sub esp, 4
mov dword [esi + 0x228], eax
mov dword [esp], eax
call fcn.00401f50
add esp, 4
mov ebx, eax
mov ecx, 8
mov eax, ebx
mul ecx
seto cl
add eax, 4
setb dl
mov dh, cl
adc dh, 0
and dl, cl
sub dh, dl
mov ecx, 0xffffffff
test dh, 1
jne 0x4116e5
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082a0
add esp, 4
mov dword [eax], ebx
add eax, 4
cmp ebx, 0
mov dword [esi + 0x1c], eax
mov dword [esi + 0x38], ebx
je 0x411721
mov ecx, ebx
shl ecx, 3
mov ebx, eax
add ebx, ecx
mov edi, eax
mov ecx, edi
call fcn.00414140
add edi, 8
cmp edi, ebx
jne 0x41170e
mov ebx, dword [esi + 0x38]
jmp 0x411721
xor ecx, ecx
jmp 0x411725
cmp ecx, ebx
mov eax, dword [esi + 0x228]
jb 0x411737
mov ecx, dword [esi + 0x1c]
jmp 0x41189a
sub esp, 8
mov dword [esp], eax
mov dword [esi + 0x218], ecx
mov dword [esp + 4], ecx
call fcn.00401f60
add esp, 8
mov dword [esi + 0x188], eax
mov eax, dword [esi + 0x25c]
mov al, byte [eax]
mov byte [esi + 0x168], al
mov eax, dword [esi + 0x44]
mov byte [eax], 0x20
mov byte [eax + 1], 0x38
mov byte [eax + 2], 0x87
xor eax, eax
cmp eax, 3
jae 0x4117c3
mov ecx, dword [esi + 0x44]
movzx edx, byte [ecx + eax]
mov ebx, eax
shl ebx, 1
and ebx, 0xa495e9da
mov ecx, eax
xor ecx, 0x524af4ed
add ecx, ebx
xor ecx, edx
mov edi, ecx
shl edi, 1
and edi, 0x2e
mov edx, ecx
xor edx, 0x6da85897
mov ebx, edx
add ebx, edi
and ecx, 1
xor ecx, 1
and edx, 1
xor ebx, 1
or edx, ebx
add ecx, edx
mov edx, dword [esi + 0x44]
mov byte [edx + eax], cl
add eax, 1
jmp 0x411773
sub esp, 8
mov eax, dword [esi + 0x188]
mov dword [esp], eax
mov eax, dword [esi + 0x44]
mov dword [esp + 4], eax
call fcn.00401890
add esp, 8
mov dword [esi + 0x1f4], eax
mov eax, dword [esi + 0x258]
mov al, byte [eax]
mov byte [esi + 0x16c], al
mov eax, dword [esi + 0x40]
mov byte [eax], 0xf3
mov byte [eax + 1], 0xcd
mov byte [eax + 2], 0x58
xor eax, eax
cmp eax, 3
jae 0x41184d
mov ecx, dword [esi + 0x40]
movzx ecx, byte [ecx + eax]
mov ebx, eax
add ebx, 0x66
and ebx, ecx
shl ebx, 1
add ecx, eax
add ecx, 0x5717e50f
mov edx, ecx
sub edx, ebx
shl ecx, 1
and ecx, 2
mov edi, 0xd9
sub edi, edx
and edi, 0xfd
and edx, 2
or edx, edi
xor edx, 0xfe
add edx, ecx
mov ecx, dword [esi + 0x40]
mov byte [ecx + eax], dl
add eax, 1
jmp 0x411802
sub esp, 8
mov eax, dword [esi + 0x188]
mov dword [esp], eax
mov eax, dword [esi + 0x40]
mov dword [esp + 4], eax
call fcn.00401890
add esp, 8
mov edi, dword [esi + 0x218]
mov edx, edi
shl edx, 3
mov ecx, dword [esi + 0x1c]
add ecx, edx
sub esp, 8
mov dword [esp], eax
mov eax, dword [esi + 0x1f4]
mov dword [esp + 4], eax
call fcn.00414150
mov ecx, edi
add ecx, 1
mov ebx, dword [esi + 0x38]
jmp 0x411725
mov dword [esi + 0x38], ebx
mov dword [esi + 0x1c], ecx
mov edi, dword [esi + 0x254]
mov ecx, edi
call fcn.004140e0
mov eax, dword [esi + 0x1b8]
mov dword [edi], eax
mov dword [edi + 4], 0
mov eax, dword [esi + 0x78]
mov dword [edi + 8], eax
mov dword [edi + 0xc], 0
mov al, byte [esi + 0x19]
mov byte [edi + 0x10], al
sub esp, 4
mov ebx, dword [esi + 0x1c4]
mov ecx, ebx
mov dword [esp], 3
call fcn.00408f80
sub esp, 0x10
mov dword [esp], ebx
mov dword [esp + 4], edi
mov eax, dword [esi + 0x1c]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x38]
mov dword [esp + 0xc], eax
call fcn.0041cea0
add esp, 0x10
mov ecx, ebx
call fcn.004099f0
mov ebx, dword [esi + 0x1c]
cmp ebx, 0
je 0x41195b
mov edx, ebx
add edx, 0xfffffffc
mov eax, dword [ebx - 4]
shl eax, 3
mov edi, ebx
add edi, eax
cmp ebx, edi
sete al
test al, 1
jne 0x41194d
jmp 0x41192f
mov dword [esi + 0x1e4], edx
jmp 0x411937
add edi, 0xfffffff8
mov ecx, edi
call fcn.00414200
cmp edi, ebx
jne 0x411937
mov edx, dword [esi + 0x1e4]
jmp 0x41194d
sub esp, 4
mov dword [esp], edx
call fcn.004082b0
add esp, 4
jmp 0x41195d
sub esp, 4
mov eax, dword [esi + 0x78]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
jmp 0x411970
sub esp, 4
mov eax, dword [esi + 0x1b8]
mov dword [esp], eax
call fcn.004082b0
add esp, 4
mov ecx, dword [esi + 0x1c4]
call fcn.00409060
mov ecx, dword [esi + 4]
jmp 0x411994
jmp 0x411996
jmp 0x411998
jmp 0x41199a
mov eax, ecx
and eax, 1
shl eax, 1
xor ecx, 1
add ecx, eax
mov ebx, ecx
mov edi, dword [esi + 0x250]
jmp 0x40eb9b
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret