Function at 0x4104df
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x618
mov edi, dword [ebp + 8]
mov al, byte [esp + 0x14c]
mov byte [esp + 0x150], al
mov byte [esp + 0x358], 0x39
mov byte [esp + 0x359], 0x9f
mov eax, 2
mov byte [esp + eax + 0x358], 0
add eax, 1
cmp eax, 8
jne 0x40e8f5
xor eax, eax
cmp eax, 8
jae 0x40e94a
movzx edx, byte [esp + eax + 0x358]
mov ecx, eax
add ecx, 0xe5
and ecx, edx
mov esi, eax
add esi, 0xe5
or esi, edx
xor ecx, esi
add cl, 0x87
mov byte [esp + eax + 0x358], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
mov edx, eax
and edx, ecx
shl edx, 1
xor eax, ecx
xor eax, 1
add eax, edx
jmp 0x40e907
lea eax, [esp + 0x358]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401970
mov esi, eax
cmp esi, 0
jne 0x40e96b
xor eax, eax
jmp 0x4113dc
xor ebx, ebx
jmp 0x40e96f
mov dword [esp], esi
call fcn.00401b80
cmp ebx, eax
jb 0x40e982
mov al, 1
jmp 0x4113dc
mov dword [esp], esi
mov dword [esp + 4], ebx
call fcn.00401b90
mov dword [esp + 0x24], eax
mov al, byte [esp + 0x148]
mov byte [esp + 0x154], al
mov byte [esp + 0x350], 0xec
mov byte [esp + 0x351], 0x79
mov eax, 2
mov byte [esp + eax + 0x350], 0
add eax, 1
cmp eax, 6
jne 0x40e9b5
mov dword [esp + 0x2c], ebx
xor eax, eax
cmp eax, 6
jae 0x40ea1d
mov cl, byte [esp + eax + 0x350]
mov edx, eax
and edx, 0x68
mov edi, eax
and edi, 2
xor edi, 2
mov ebx, eax
and ebx, 0x68
imul ebx, edi
mov edi, eax
and edi, 2
or edx, 2
imul edx, edi
add edx, ebx
mov edi, eax
shl edi, 1
and edi, 0xd4
mov ebx, eax
add ebx, 0x6a
sub ebx, edi
add ebx, edx
xor bl, cl
add bl, 0xee
mov byte [esp + eax + 0x350], bl
add eax, 1
jmp 0x40e9cb
lea eax, [esp + 0x350]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401b20
cmp eax, 0
setne al
xor al, 0xff
test al, 1
mov ebx, dword [esp + 0x2c]
jne 0x40ea4e
jmp 0x40ea53
jmp 0x4113d4
mov al, byte [esp + 0x144]
mov byte [esp + 0x158], al
mov byte [esp + 0x54], 0xb0
mov byte [esp + 0x55], 0x5b
mov eax, 2
mov byte [esp + eax + 0x54], 0
add eax, 1
cmp eax, 4
jne 0x40ea70
xor eax, eax
cmp eax, 4
jae 0x40eac8
movzx edi, byte [esp + eax + 0x54]
mov edx, eax
add edx, 0x8f
mov ebx, edi
xor ebx, 0x7c
mov ecx, edi
or ecx, 0x83
and ecx, ebx
mov ebx, 0x70
sub ebx, eax
and ebx, 0x7c
and edx, 0x83
and edi, 0x7c
xor edi, 0x7c
or ecx, edi
or ebx, edx
xor ecx, ebx
add cl, 0x35
mov byte [esp + eax + 0x54], cl
add eax, 1
jmp 0x40ea7f
lea eax, [esp + 0x54]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401900
fnstcw word [esp + 0x62]
movzx eax, word [esp + 0x62]
or eax, 0xc00
mov word [esp + 0x20e], ax
fldcw word [esp + 0x20e]
fistp dword [esp + 0x3cc]
fldcw word [esp + 0x62]
mov eax, dword [esp + 0x3cc]
mov ecx, eax
sub ecx, 3
mov ebx, dword [esp + 0x2c]
ja 0x4113d2
mov eax, dword [eax*4 + 0x43f2bc]
jmp eax
mov al, byte [esp + 0x140]
mov byte [esp + 0x15c], al
mov byte [esp + 0x50], 0xe8
mov byte [esp + 0x51], 0x79
mov eax, 2
mov byte [esp + eax + 0x50], 0
add eax, 1
cmp eax, 4
jne 0x40eb40
xor eax, eax
cmp eax, 4
jae 0x40eb7e
movzx edx, byte [esp + eax + 0x50]
mov ecx, 0x15
sub ecx, eax
or ecx, edx
xor edx, 0xffffffff
mov edi, eax
add edi, 0xea
or edi, edx
and ecx, edi
mov dl, 0x6d
sub dl, cl
mov byte [esp + eax + 0x50], dl
add eax, 1
jmp 0x40eb4f
lea eax, [esp + 0x50]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401b20
cmp eax, 0
je 0x40ef41
mov al, byte [esp + 0x134]
mov byte [esp + 0x160], al
mov byte [esp + 0x138], 0xcd
mov byte [esp + 0x139], 0xc9
mov byte [esp + 0x13a], 0xce
mov byte [esp + 0x13b], 0xcf
mov eax, 4
mov byte [esp + eax + 0x138], 0
add eax, 1
cmp eax, 6
jne 0x40ebd6
xor eax, eax
cmp eax, 6
jae 0x40ec1e
movzx edx, byte [esp + eax + 0x138]
mov ecx, eax
add ecx, 0x3dc311b2
xor ecx, edx
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, 0x92
add ecx, edx
add cl, 0xf3
mov byte [esp + eax + 0x138], cl
add eax, 1
jmp 0x40ebe8
mov eax, dword [esp + 0x138]
mov dword [esp + 0x37c], eax
mov al, byte [esp + 0x130]
mov byte [esp + 0x164], al
mov byte [esp + 0x348], 0xc5
mov byte [esp + 0x349], 0x31
mov eax, 2
mov byte [esp + eax + 0x348], 0
add eax, 1
cmp eax, 7
jne 0x40ec4f
xor ecx, ecx
cmp ecx, 7
jae 0x40ecec
mov al, byte [esp + ecx + 0x348]
mov byte [esp + 0x35], al
movzx edi, al
mov edx, ecx
add edx, 0x74
mov ebx, ecx
add ebx, 0x74
and ebx, edi
xor edi, 0xffffffff
mov eax, 0xd7a38c8b
sub eax, ecx
and eax, edi
or eax, ebx
mov ebx, 0xd7a38c8b
sub ebx, ecx
mov edi, eax
xor edi, 0xffffffff
or ebx, edi
xor eax, 0xffffffff
mov edi, 0xd7a38c8b
sub edi, ecx
or edi, eax
and edi, ebx
mov eax, edi
xor eax, 0xffffffff
mov ebx, edi
and ebx, 2
and edi, 0xfd
xor edi, 0xfd
imul edi, ebx
mov ebx, eax
and ebx, 2
or eax, 2
imul eax, ebx
add eax, edi
sub edx, eax
add dl, byte [esp + 0x35]
add dl, 0xbc
mov byte [esp + ecx + 0x348], dl
add ecx, 1
jmp 0x40ec61
lea eax, [esp + 0x348]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x37c]
mov dword [esp + 8], eax
call fcn.00401b20
cmp eax, 0
mov ebx, dword [esp + 0x2c]
je 0x40ef41
mov al, byte [esp + 0x12c]
mov byte [esp + 0x168], al
mov byte [esp + 0x340], 0xa
mov byte [esp + 0x341], 0x91
mov eax, 2
mov byte [esp + eax + 0x340], 0
add eax, 1
cmp eax, 6
jne 0x40ed3e
mov dword [esp + 0x28], esi
xor edx, edx
cmp edx, 6
jae 0x40edc1
movzx esi, byte [esp + edx + 0x340]
mov eax, edx
add eax, 0x2078c624
mov edi, 0xdb
sub edi, edx
mov ebx, 0x1f8739db
sub ebx, edx
and ebx, 0x3dd64dc4
mov ecx, eax
and ecx, 0xc229b23b
or ebx, ecx
xor ebx, 0x3b
and edi, ebx
xor edi, 0xffffffff
mov ebx, esi
and ebx, edi
mov edi, 0xdb
sub edi, edx
and edi, esi
xor eax, esi
add eax, esi
mov ecx, eax
xor ecx, 0xffffffff
mov esi, edi
add esi, ecx
xor eax, 0xffffffff
add edi, eax
and esi, edi
or ebx, esi
mov al, 0x4b
sub al, bl
mov byte [esp + edx + 0x340], al
add edx, 1
jmp 0x40ed54
lea eax, [esp + 0x340]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401b20
cmp eax, 0
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
je 0x40ef41
mov al, byte [esp + 0x128]
mov byte [esp + 0x16c], al
mov byte [esp + 0x338], 0x28
mov byte [esp + 0x339], 0x87
mov eax, 2
mov byte [esp + eax + 0x338], 0
add eax, 1
cmp eax, 5
jne 0x40ee14
xor eax, eax
cmp eax, 5
jae 0x40ee58
mov dl, byte [esp + eax + 0x338]
mov esi, eax
and esi, 0xdf
xor esi, 0xdf
mov ecx, eax
and ecx, 0x20
sub ecx, esi
xor cl, dl
add cl, 0x5b
mov byte [esp + eax + 0x338], cl
add eax, 1
jmp 0x40ee26
lea eax, [esp + 0x338]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401b20
cmp eax, 0
mov esi, dword [esp + 0x28]
je 0x40ef41
mov al, byte [esp + 0x124]
mov byte [esp + 0x170], al
mov byte [esp + 0x40], 0x1e
mov byte [esp + 0x41], 0x2e
mov byte [esp + 0x42], 0xba
mov eax, 3
mov byte [esp + eax + 0x40], 0
add eax, 1
cmp eax, 4
jne 0x40eea6
xor eax, eax
cmp eax, 4
jae 0x40ef0b
movzx esi, byte [esp + eax + 0x40]
mov edx, 0x1db1f0a0
sub edx, eax
or edx, esi
mov ecx, 0xa0
sub ecx, eax
and ecx, esi
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x48
mov esi, ecx
shl esi, 1
and esi, 0x48
add esi, 0xdc
sub ecx, esi
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x40], cl
mov ecx, eax
and ecx, 1
or eax, 1
add eax, 0xfc1721a1
or eax, ecx
add eax, 0x3e8de5f
jmp 0x40eeb5
lea eax, [esp + 0x40]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401b20
cmp eax, 0
setne al
xor al, 0xff
and al, 1
or al, 0
mov esi, dword [esp + 0x28]
test al, 1
jne 0x4113d2
jmp 0x40ef46
jmp 0x4113d2
mov al, byte [esp + 0x120]
mov byte [esp + 0x174], al
mov byte [esp + 0x330], 8
mov byte [esp + 0x331], 0x99
mov eax, 2
mov byte [esp + eax + 0x330], 0
add eax, 1
cmp eax, 8
jne 0x40ef69
xor eax, eax
cmp eax, 8
jae 0x40efae
movzx esi, byte [esp + eax + 0x330]
mov ecx, 0x99
sub ecx, eax
or ecx, esi
mov edx, 0x99
sub edx, eax
and edx, esi
xor ecx, 0xffffffff
or edx, ecx
add dl, 2
mov byte [esp + eax + 0x330], dl
add eax, 1
jmp 0x40ef7b
lea eax, [esp + 0x330]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov ebx, eax
mov al, byte [esp + 0x11c]
mov byte [esp + 0x178], al
mov byte [esp + 0x328], 0xaf
mov byte [esp + 0x329], 0x1b
mov eax, 2
mov byte [esp + eax + 0x328], 0
add eax, 1
cmp eax, 5
jne 0x40efea
xor eax, eax
cmp eax, 5
jae 0x40f052
movzx edx, byte [esp + eax + 0x328]
mov esi, eax
add esi, 0x7b
and esi, edx
shl esi, 1
mov ecx, eax
add ecx, 0x2200817b
add ecx, edx
sub ecx, esi
mov edx, ecx
and edx, 0xfdd0d5b2
xor edx, 0xfdd0d5b2
and ecx, 0x22f2a4d
sub ecx, edx
add ecx, 0x55fd7898
mov edx, ecx
shl edx, 1
and edx, 0x64
xor ecx, 0x4d
sub edx, ecx
mov byte [esp + eax + 0x328], dl
add eax, 1
jmp 0x40effc
lea eax, [esp + 0x328]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401970
mov dword [esp + 0x290], eax
mov al, byte [esp + 0x118]
mov byte [esp + 0x17c], al
mov byte [esp + 0x320], 0x5e
mov byte [esp + 0x321], 0xc7
mov eax, 2
mov byte [esp + eax + 0x320], 0
add eax, 1
cmp eax, 7
jne 0x40f093
xor eax, eax
cmp eax, 7
jae 0x40f0f4
movzx edx, byte [esp + eax + 0x320]
mov esi, eax
add esi, 0xd4f319d1
mov ecx, 0x30ce62e
sub ecx, eax
and ecx, 0x34345a0
and esi, 0xfcbcba5f
mov edi, edx
xor edi, 0xa0
or ecx, esi
mov esi, ecx
xor esi, 0xffffffff
and edi, esi
xor edx, 0x5f
and ecx, edx
or ecx, edi
add cl, 0xeb
mov byte [esp + eax + 0x320], cl
add eax, 1
jmp 0x40f0a5
lea eax, [esp + 0x320]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov dword [esp + 0x278], eax
mov al, byte [esp + 0x114]
mov byte [esp + 0x180], al
mov byte [esp + 0x318], 0xac
mov byte [esp + 0x319], 0xc9
mov eax, 2
mov byte [esp + eax + 0x318], 0
add eax, 1
cmp eax, 6
jne 0x40f135
xor eax, eax
cmp eax, 6
jae 0x40f186
movzx edx, byte [esp + eax + 0x318]
xor ecx, ecx
sub ecx, eax
mov esi, ecx
shl esi, 1
and esi, 0x82ae735c
xor ecx, 0x3ea8c651
add ecx, 1
sub ecx, esi
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
add cl, 0x66
mov byte [esp + eax + 0x318], cl
add eax, 1
jmp 0x40f147
lea eax, [esp + 0x318]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401900
fnstcw word [esp + 0x60]
movzx eax, word [esp + 0x60]
or eax, 0xc00
mov word [esp + 0x20c], ax
fldcw word [esp + 0x20c]
fistp dword [esp + 0x3c0]
fldcw word [esp + 0x60]
mov eax, dword [esp + 0x3c0]
mov dword [esp + 0x3a8], eax
mov al, byte [esp + 0x110]
mov byte [esp + 0x184], al
mov byte [esp + 0x3c], 6
mov byte [esp + 0x3d], 0x12
mov byte [esp + 0x3e], 0x62
mov eax, 3
mov byte [esp + eax + 0x3c], 0
add eax, 1
cmp eax, 4
jne 0x40f1f5
xor eax, eax
cmp eax, 4
jae 0x40f220
mov cl, byte [esp + eax + 0x3c]
mov dl, al
add dl, 0xe8
xor dl, cl
add dl, 0x78
mov byte [esp + eax + 0x3c], dl
add eax, 1
jmp 0x40f204
lea eax, [esp + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401900
fnstcw word [esp + 0x5e]
movzx eax, word [esp + 0x5e]
or eax, 0xc00
mov word [esp + 0x20a], ax
fldcw word [esp + 0x20a]
fistp dword [esp + 0x3bc]
fldcw word [esp + 0x5e]
mov eax, dword [esp + 0x3bc]
mov dword [esp + 0x3a0], eax
mov al, byte [esp + 0x10c]
mov byte [esp + 0x188], al
mov byte [esp + 0x248], 0xea
mov byte [esp + 0x249], 0xe3
mov byte [esp + 0x24a], 0x4e
mov eax, 3
mov byte [esp + eax + 0x248], 0
add eax, 1
cmp eax, 7
jne 0x40f295
xor eax, eax
cmp eax, 7
jae 0x40f2e3
movzx edx, byte [esp + eax + 0x248]
mov ecx, eax
add ecx, 0x59e530ed
or ecx, edx
mov esi, eax
add esi, 0xed
and esi, edx
sub ecx, esi
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, 0x5e
add edx, ecx
mov byte [esp + eax + 0x248], dl
add eax, 1
jmp 0x40f2a7
lea eax, [esp + 0x248]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004019d0
cmp eax, 0
setg byte [esp + 0x37]
mov dword [esp + 0x3a4], ebx
mov dword [esp], ebx
call fcn.004130e0
xor ecx, ecx
mov dword [esp + 0x258], eax
sub ecx, eax
add ecx, 0xffffffff
xor ebx, ebx
sub ebx, ecx
mov esi, dword [esp + 0x28]
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f33f
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x3a4]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040acb0
xor eax, eax
lea eax, [esp + 0x108]
mov dword [esp], 0
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x258]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x4491f0]
sub esp, 0x18
mov eax, dword [esp + 0x108]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
mov ebx, dword [esp + 0x2c]
jne 0x40f3c7
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
mov ecx, dword [0x4491f0]
mov dword [esp + 0x360], ecx
mov ecx, dword [esp + 0x108]
xor edx, edx
mov dword [esp], 0
mov dword [esp + 4], edi
mov edx, dword [esp + 0x258]
mov dword [esp + 8], edx
mov dword [esp + 0x274], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [esp + 0x108]
mov dword [esp + 0x14], eax
call dword [esp + 0x360]
sub esp, 0x18
mov dword [esp], edi
call fcn.004082e0
mov eax, dword [esp + 0x278]
mov dword [esp], eax
call fcn.004130e0
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f453
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
xor ecx, ecx
mov dword [esp + 0x26c], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esp + 0x278]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040acb0
lea ecx, [esp + 0x588]
mov dword [esp], 1
call fcn.00409010
sub esp, 4
xor edi, edi
mov eax, dword [esp + 0x290]
mov dword [esp], eax
call fcn.00401b80
cmp edi, eax
jb 0x40f4b3
jmp 0x40f5c8
mov eax, dword [esp + 0x290]
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.00401b60
mov dword [esp], eax
call fcn.004018e0
cmp eax, 0
sete cl
test cl, 1
jne 0x40f4db
jmp 0x40f4e0
jmp 0x40f5b7
mov dword [esp + 0x370], eax
mov dword [esp], eax
call fcn.004130e0
xor ecx, ecx
sub ecx, eax
add ecx, 0xffffffff
xor eax, eax
sub eax, ecx
jmp 0x40f4fc
mov ecx, 2
mov dword [esp + 0x364], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40f519
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
mov ebx, eax
xor eax, eax
mov dword [esp], ebx
mov eax, dword [esp + 0x364]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x370]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040acb0
mov eax, dword [esp + 0x3a8]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x3a0]
mov dword [esp + 0x10], eax
mov dword [esp + 0x36c], ebx
mov dword [esp + 0xc], ebx
mov eax, dword [esp + 0x274]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x26c]
mov dword [esp + 4], eax
lea eax, [esp + 0x588]
mov dword [esp], eax
xor eax, eax
mov cl, byte [esp + 0x37]
mov al, cl
and eax, 1
mov dword [esp + 0x18], eax
call fcn.0041d8a0
mov ebx, dword [esp + 0x2c]
jmp 0x40f5a6
mov eax, dword [esp + 0x36c]
mov dword [esp], eax
call fcn.004082e0
jmp 0x40f5b7
mov eax, edi
and eax, 1
shl eax, 1
xor edi, 1
add edi, eax
jmp 0x40f49b
mov eax, dword [esp + 0x26c]
mov dword [esp], eax
call fcn.004082e0
jmp 0x40f5d9
mov eax, dword [esp + 0x274]
mov dword [esp], eax
call fcn.004082e0
lea ecx, [esp + 0x588]
call fcn.00409a50
lea ecx, [esp + 0x588]
call fcn.004090f0
jmp 0x4113d2
mov al, byte [esp + 0x104]
mov byte [esp + 0x18c], al
mov byte [esp + 0x4c], 0xdf
mov byte [esp + 0x4d], 0x71
mov eax, 2
mov byte [esp + eax + 0x4c], 0
add eax, 1
cmp eax, 4
jne 0x40f622
mov dword [esp + 0x28], esi
xor eax, eax
cmp eax, 4
jae 0x40f670
movzx edx, byte [esp + eax + 0x4c]
mov esi, eax
shl esi, 1
and esi, 0x82490428
mov ecx, eax
xor ecx, 0xc1248214
add ecx, esi
xor ecx, edx
add ecx, 0x3a49759b
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x4c], cl
add eax, 1
jmp 0x40f635
lea eax, [esp + 0x4c]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401b20
cmp eax, 0
mov esi, dword [esp + 0x28]
je 0x40f9cb
mov al, byte [esp + 0x100]
mov byte [esp + 0x190], al
mov byte [esp + 0x310], 0xc8
mov byte [esp + 0x311], 0x79
mov eax, 2
mov byte [esp + eax + 0x310], 0
add eax, 1
cmp eax, 8
jne 0x40f6bc
xor eax, eax
cmp eax, 8
jae 0x40f6fd
movzx ecx, byte [esp + eax + 0x310]
mov edx, eax
add edx, 0xacc13916
xor edx, ecx
mov ecx, edx
shl ecx, 1
and ecx, 0x22
xor edx, 0x6e
sub ecx, edx
mov byte [esp + eax + 0x310], cl
add eax, 1
jmp 0x40f6ce
lea eax, [esp + 0x310]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401b20
cmp eax, 0
je 0x40f9cb
mov al, byte [esp + 0xfc]
mov byte [esp + 0x194], al
mov byte [esp + 0x308], 0x8d
mov byte [esp + 0x309], 0x19
mov eax, 2
mov byte [esp + eax + 0x308], 0
add eax, 1
cmp eax, 7
jne 0x40f748
xor eax, eax
cmp eax, 7
jae 0x40f79b
movzx edx, byte [esp + eax + 0x308]
mov ecx, eax
add ecx, 0xaf813b46
xor ecx, edx
add ecx, 0x9279d7a1
mov edx, ecx
shl edx, 1
and edx, 2
mov esi, ecx
shl esi, 1
and esi, 2
add esi, 0xff
sub ecx, esi
add ecx, edx
mov byte [esp + eax + 0x308], cl
add eax, 1
jmp 0x40f75a
lea eax, [esp + 0x308]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 5
call fcn.00401b20
cmp eax, 0
mov esi, dword [esp + 0x28]
je 0x40f9cb
mov al, byte [esp + 0xf8]
mov byte [esp + 0x198], al
mov byte [esp + 0x300], 0x8e
mov byte [esp + 0x301], 9
mov eax, 2
mov byte [esp + eax + 0x300], 0
add eax, 1
cmp eax, 8
jne 0x40f7ea
xor eax, eax
cmp eax, 8
jae 0x40f857
movzx edi, byte [esp + eax + 0x300]
mov edx, 0x992370c1
sub edx, eax
or edx, edi
mov ecx, 0xc1
sub ecx, eax
mov esi, 0xc1
sub esi, eax
or ecx, esi
mov esi, edi
xor esi, 0xffffffff
or ecx, esi
add ecx, edi
add ecx, 1
mov esi, edx
shl esi, 1
xor esi, 0xffffffff
add edx, esi
or ecx, edx
add ecx, 0xfdb133c9
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x300], cl
add eax, 1
jmp 0x40f7fc
lea eax, [esp + 0x300]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401b20
cmp eax, 0
mov esi, dword [esp + 0x28]
je 0x40f9cb
mov al, byte [esp + 0xf4]
mov byte [esp + 0x19c], al
mov byte [esp + 0x2f8], 0x38
mov byte [esp + 0x2f9], 0x9f
mov eax, 2
mov byte [esp + eax + 0x2f8], 0
add eax, 1
cmp eax, 7
jne 0x40f8a6
xor eax, eax
cmp eax, 7
jae 0x40f8f5
movzx ecx, byte [esp + eax + 0x2f8]
mov edx, eax
add edx, 0x13b6e5e5
xor edx, ecx
mov ecx, edx
and ecx, 0x86
mov ebx, edx
add ebx, ecx
or edx, 0x79
sub ebx, edx
mov byte [esp + eax + 0x2f8], bl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40f8b8
lea eax, [esp + 0x2f8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401b20
cmp eax, 0
mov ebx, dword [esp + 0x2c]
je 0x40f9cb
mov al, byte [esp + 0xf0]
mov byte [esp + 0x1a0], al
mov byte [esp + 0x240], 0xee
mov byte [esp + 0x241], 0xe2
mov byte [esp + 0x242], 0x72
mov eax, 3
mov byte [esp + eax + 0x240], 0
add eax, 1
cmp eax, 8
jne 0x40f94c
xor eax, eax
cmp eax, 8
jae 0x40f999
mov dl, byte [esp + eax + 0x240]
mov esi, eax
and esi, 0x38
xor esi, 0x38
mov ecx, eax
and ecx, 0xc7
sub ecx, esi
add cl, 0xa4
xor cl, dl
add cl, 0xe4
mov byte [esp + eax + 0x240], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x40f95e
lea eax, [esp + 0x240]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
mov dword [esp + 8], 3
call fcn.00401b20
test eax, eax
sete al
test al, 1
mov esi, dword [esp + 0x28]
jne 0x4113d2
jmp 0x40f9d0
jmp 0x4113d2
mov al, byte [esp + 0xec]
mov byte [esp + 0x1a4], al
mov byte [esp + 0x2f0], 0xe3
mov byte [esp + 0x2f1], 0x89
mov eax, 2
mov byte [esp + eax + 0x2f0], 0
add eax, 1
cmp eax, 5
jne 0x40f9f3
xor eax, eax
cmp eax, 5
jae 0x40fa27
mov cl, byte [esp + eax + 0x2f0]
mov dl, al
add dl, 0x9e
xor dl, cl
add dl, 0xea
mov byte [esp + eax + 0x2f0], dl
add eax, 1
jmp 0x40fa05
lea eax, [esp + 0x2f0]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov dword [esp + 0x284], eax
mov al, byte [esp + 0xe8]
mov byte [esp + 0x1a8], al
mov byte [esp + 0x2e8], 0x80
mov byte [esp + 0x2e9], 0x11
mov eax, 2
mov byte [esp + eax + 0x2e8], 0
add eax, 1
cmp eax, 8
jne 0x40fa68
xor eax, eax
cmp eax, 8
jae 0x40faf8
movzx ecx, byte [esp + eax + 0x2e8]
mov edi, eax
add edi, 0x1aec0d44
mov edx, edi
and edx, ecx
mov esi, edx
and esi, 0xfd
mov ebx, edx
and ebx, 2
xor ebx, 2
imul ebx, esi
mov esi, edx
and esi, 2
or edx, 2
imul edx, esi
add edx, ebx
mov esi, edx
xor esi, edi
mov edi, 0x6513f2bb
sub edi, eax
and edx, edi
shl edx, 1
sub edx, esi
mov esi, ecx
xor esi, 0xffffffff
mov edi, edx
and edi, esi
xor edx, 0xffffffff
and ecx, edx
sub ecx, edi
add ecx, 0x7963bdab
mov esi, ecx
shl esi, 1
and esi, 2
mov edx, ecx
and edx, esi
or ecx, esi
xor ecx, 1
add edx, ecx
mov byte [esp + eax + 0x2e8], dl
add eax, 1
jmp 0x40fa7a
lea eax, [esp + 0x2e8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov cl, byte [esp + 0xe4]
mov byte [esp + 0x1ac], cl
mov byte [esp + 0x2e0], 0xa5
mov byte [esp + 0x2e1], 0x11
mov ecx, 2
mov byte [esp + ecx + 0x2e0], 0
add ecx, 1
cmp ecx, 7
jne 0x40fb32
mov dword [esp + 0x3ac], eax
xor eax, eax
cmp eax, 7
jae 0x40fb8d
movzx edx, byte [esp + eax + 0x2e0]
mov ecx, eax
add ecx, 0x2609d37c
mov esi, edx
xor esi, 0xffffffff
and ecx, esi
mov esi, 0x83
sub esi, eax
and esi, edx
or ecx, esi
mov edx, ecx
xor edx, 0x6d
shl ecx, 1
and ecx, 0x24
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0x2e0], cl
add eax, 1
jmp 0x40fb4b
lea eax, [esp + 0x2e0]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401970
mov dword [esp + 0x29c], eax
mov al, byte [esp + 0xe0]
mov byte [esp + 0x1b0], al
mov byte [esp + 0x2d8], 0x4e
mov byte [esp + 0x2d9], 0xc9
mov eax, 2
mov byte [esp + eax + 0x2d8], 0
add eax, 1
cmp eax, 7
jne 0x40fbce
xor eax, eax
cmp eax, 7
jae 0x40fc37
movzx edx, byte [esp + eax + 0x2d8]
mov ecx, 0xb1
sub ecx, eax
mov esi, 0xb1
sub esi, eax
and ecx, esi
mov esi, edx
xor esi, 0xffffffff
or ecx, esi
and ecx, 0xff
xor ecx, 0xff
mov esi, eax
add esi, 0xe5d2ee4e
or esi, edx
xor esi, 0xffffffff
or ecx, esi
mov edx, ecx
shl edx, 1
xor edx, 0xffffffff
add ecx, edx
add cl, 0x7a
mov byte [esp + eax + 0x2d8], cl
add eax, 1
jmp 0x40fbe0
lea eax, [esp + 0x2d8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov cl, byte [esp + 0xdc]
mov byte [esp + 0x1b4], cl
mov byte [esp + 0x2d0], 0x84
mov byte [esp + 0x2d1], 0x21
mov ecx, 2
mov byte [esp + ecx + 0x2d0], 0
add ecx, 1
cmp ecx, 5
jne 0x40fc71
mov dword [esp + 0x3b4], eax
xor eax, eax
cmp eax, 5
jae 0x40fcb6
movzx edx, byte [esp + eax + 0x2d0]
mov esi, eax
add esi, 0x48
mov ecx, eax
add ecx, 0x48
and ecx, edx
or esi, edx
xor ecx, esi
add cl, 0x98
mov byte [esp + eax + 0x2d0], cl
add eax, 1
jmp 0x40fc8a
lea eax, [esp + 0x2d0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401900
fnstcw word [esp + 0x5c]
movzx eax, word [esp + 0x5c]
or eax, 0xc00
mov word [esp + 0x208], ax
fldcw word [esp + 0x208]
fistp dword [esp + 0x3c8]
fldcw word [esp + 0x5c]
mov eax, dword [esp + 0x3c8]
mov dword [esp + 0x3b8], eax
mov al, byte [esp + 0xd8]
mov byte [esp + 0x1b8], al
mov byte [esp + 0x238], 0xba
mov byte [esp + 0x239], 0xaa
mov byte [esp + 0x23a], 0x26
mov eax, 3
mov byte [esp + eax + 0x238], 0
add eax, 1
cmp eax, 6
jne 0x40fd2e
xor eax, eax
cmp eax, 6
jae 0x40fd93
movzx edx, byte [esp + eax + 0x238]
mov ecx, eax
add ecx, 0x241db379
mov esi, eax
add esi, 0x79
and esi, edx
mov edi, ecx
and edi, esi
mov esi, edi
and esi, 2
xor esi, 2
mov ebx, edi
and ebx, 0xfd
imul ebx, esi
mov esi, edi
and esi, 2
or edi, 2
imul edi, esi
add edi, ebx
add ecx, edx
sub ecx, edi
add cl, 0xa3
mov byte [esp + eax + 0x238], cl
add eax, 1
jmp 0x40fd40
lea eax, [esp + 0x238]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401900
fnstcw word [esp + 0x5a]
movzx eax, word [esp + 0x5a]
or eax, 0xc00
mov word [esp + 0x206], ax
fldcw word [esp + 0x206]
fistp dword [esp + 0x3c4]
fldcw word [esp + 0x5a]
mov eax, dword [esp + 0x3c4]
mov dword [esp + 0x3b0], eax
mov eax, dword [esp + 0x284]
mov dword [esp], eax
call fcn.004130e0
mov edi, eax
add edi, 0x4910b4f0
add edi, 1
sub edi, 0x4910b4f0
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
mov esi, dword [esp + 0x28]
jne 0x40fe1c
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
mov ebx, eax
xor eax, eax
mov dword [esp], ebx
mov dword [esp + 4], edi
mov eax, dword [esp + 0x284]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040acb0
lea ecx, [esp + 0x3e0]
mov dword [esp], ebx
call fcn.00413150
sub esp, 4
jmp 0x40fe5b
mov dword [esp], ebx
call fcn.004082e0
mov ebx, dword [esp + 0x2c]
jmp 0x40fe69
lea ecx, [esp + 0x3e0]
mov dword [esp], 0x1000
call fcn.004363c0
sub esp, 4
cmp eax, 0
jge 0x40fe89
jmp 0x4104ce
mov dword [esp + 0xd4], 0
mov eax, dword [esp + 0x3e0]
mov dword [esp + 0x384], eax
mov al, byte [esp + 0x1bc]
mov byte [esp + 0x204], al
mov byte [esp + 0x44], 0x1d
mov byte [esp + 0x45], 0x1e
mov byte [esp + 0x46], 0x1f
mov byte [esp + 0x47], 0x10
xor eax, eax
cmp eax, 4
jae 0x40fef1
movzx edx, byte [esp + eax + 0x44]
mov esi, eax
add esi, 0x45
and esi, edx
shl esi, 1
mov ecx, eax
add ecx, 0xc5
add ecx, edx
sub ecx, esi
add cl, 0x27
mov byte [esp + eax + 0x44], cl
add eax, 1
jmp 0x40fec6
mov edi, dword [esp + 0x44]
xor esi, esi
mov ecx, 2
cmp esi, dword [0x4491f4]
jb 0x40ff09
jmp 0x40ff92
mov edx, dword [0x4491f8]
cmp dword [edx + esi*8], 0xae6e2b0b
sete bl
xor ecx, ecx
mov byte [esp + 0x34], bl
test bl, 1
jne 0x40ff26
jmp 0x40ff81
mov edx, dword [edx + esi*8 + 4]
mov ecx, 2
cmp edx, edi
je 0x40ff81
mov eax, dword [0x4491fc]
xor ecx, ecx
lea ecx, [esp + 0xd4]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esp + 0x384]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], ecx
call fcn.00438f20
mov ecx, 1
test byte [esp + 0x34], 1
je 0x40ff8a
jmp 0x40ff92
add esi, 1
jmp 0x40fef7
cmp ecx, 2
je 0x40ff99
mov edi, eax
mov al, byte [esp + 0xc8]
mov byte [esp + 0x1c0], al
mov byte [esp + 0xcc], 0x3c
mov byte [esp + 0xcd], 0x31
mov byte [esp + 0xce], 0x32
mov byte [esp + 0xcf], 0xf3
mov eax, 4
mov byte [esp + eax + 0xcc], 0
add eax, 1
cmp eax, 8
jne 0x40ffcc
xor eax, eax
cmp eax, 8
jae 0x41004e
movzx ecx, byte [esp + eax + 0xcc]
mov edx, 0xc314aacb
sub edx, eax
mov esi, edx
and esi, ecx
mov ebx, edx
xor ebx, ecx
sub ebx, edx
add ebx, esi
xor ebx, 0xffffffff
mov edx, eax
add edx, 0x3ceb5534
or edx, ecx
and edx, ebx
mov ecx, edx
add ecx, 0x7b
mov esi, 0x3098aa04
sub esi, edx
or esi, 1
mov ebx, edx
add ebx, esi
shl ebx, 1
add ebx, 0xf8
mov esi, 4
sub esi, edx
and esi, 0x8b
and ecx, 0x74
or esi, ecx
xor esi, 0x8a
add ebx, esi
mov byte [esp + eax + 0xcc], bl
add eax, 1
jmp 0x40ffde
mov eax, dword [esp + 0xcc]
cmp edi, eax
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
jne 0x4104ce
mov eax, dword [esp + 0xd4]
mov ecx, eax
and ecx, 2
or eax, 2
add ecx, eax
mov dword [esp], ecx
call fcn.00435ff0
mov dword [esp + 0x7c], eax
mov edi, dword [esp + 0xd4]
sub edi, 0xcf013281
add edi, 2
add edi, 0xcf013281
mov eax, dword [esp + 0x3e0]
mov dword [esp + 0x380], eax
mov al, byte [esp + 0x1c4]
mov byte [esp + 0x200], al
mov byte [esp + 0x48], 0x1d
mov byte [esp + 0x49], 0x1e
mov byte [esp + 0x4a], 0x1f
mov byte [esp + 0x4b], 0x10
xor eax, eax
cmp eax, 4
jae 0x4100f9
movzx edx, byte [esp + eax + 0x48]
mov esi, eax
add esi, 0x45
and esi, edx
shl esi, 1
mov ecx, eax
add ecx, 0xc5
add ecx, edx
sub ecx, esi
mov esi, dword [esp + 0x28]
add cl, 0x27
mov byte [esp + eax + 0x48], cl
add eax, 1
jmp 0x4100ca
mov edx, dword [esp + 0x48]
xor ebx, ebx
mov ecx, 2
cmp ebx, dword [0x4491f4]
jb 0x410111
jmp 0x4101ad
mov dword [esp + 0x78], edx
mov edx, dword [0x4491f8]
mov esi, ebx
cmp dword [edx + ebx*8], 0xae6e2b0b
sete bl
xor ecx, ecx
mov byte [esp + 0x33], bl
test bl, 1
jne 0x410134
jmp 0x41018a
mov edx, dword [edx + esi*8 + 4]
mov ecx, 2
cmp edx, dword [esp + 0x78]
je 0x41018a
mov eax, dword [0x4491fc]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esp + 0x380]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], 0
call fcn.00438f20
mov ecx, 1
test byte [esp + 0x33], 1
je 0x41019b
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x78]
jmp 0x4101ad
mov ebx, esi
add ebx, 1
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x78]
jmp 0x4100ff
cmp ecx, 2
je 0x4101b4
mov edx, eax
cmp edx, 0
jl 0x4104bc
mov esi, dword [esp + 0x3ac]
mov dword [esp], esi
call fcn.004130e0
mov ebx, eax
mov dword [esp + 0x378], ebx
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4101f0
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
xor ecx, ecx
mov dword [esp + 0x388], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040acb0
mov ecx, dword [esp + 0x7c]
mov esi, ecx
add esi, 4
mov eax, dword [ecx + 4]
movzx ecx, word [ecx]
shr ecx, 1
mov edx, ecx
xor edx, 0xffffffff
and edx, 1
and ecx, 0xfffffffe
sub ecx, edx
shl ecx, 1
add eax, ecx
mov edi, eax
cmp edi, dword [esi]
jb 0x410250
movzx ecx, word [edi]
cmp ecx, 0x5c
jne 0x41024b
jmp 0x410254
add edi, 0xfffffffe
jmp 0x41023d
mov edi, eax
jmp 0x410254
mov eax, dword [esi]
sub edi, eax
sar edi, 1
mov ecx, edi
mov edx, dword [esp + 0x378]
and ecx, edx
shl ecx, 1
mov eax, edi
xor eax, edx
add eax, ecx
add eax, 0xf200457b
add eax, 1
sub eax, 0xf200457b
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410290
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
mov ebx, eax
mov eax, dword [esi]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], edi
call fcn.00413180
mov dword [esp], eax
mov esi, dword [esp + 0x388]
mov dword [esp + 4], esi
call fcn.00409f20
mov edi, eax
mov dword [esp], esi
call fcn.004082e0
sub edi, ebx
sar edi, 1
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4102e8
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
mov dword [esp], ebx
mov dword [esp + 0x270], eax
mov dword [esp + 4], eax
call fcn.00434550
mov dword [esp], ebx
call fcn.004082e0
mov esi, dword [esp + 0x3b4]
mov dword [esp], esi
call fcn.004130e0
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410337
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
xor ecx, ecx
mov dword [esp + 0x260], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040acb0
lea ecx, [esp + 0x500]
mov dword [esp], 1
call fcn.00409010
sub esp, 4
xor ebx, ebx
mov eax, dword [esp + 0x29c]
mov dword [esp], eax
call fcn.00401b80
cmp ebx, eax
jb 0x410390
jmp 0x41047e
mov eax, dword [esp + 0x29c]
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.00401b60
mov dword [esp], eax
call fcn.004018e0
mov dword [esp + 0x254], eax
cmp eax, 0
sete al
test al, 1
jne 0x4103be
jmp 0x4103c3
jmp 0x41046f
mov eax, dword [esp + 0x254]
mov dword [esp], eax
call fcn.004130e0
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4103ef
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
mov esi, eax
xor eax, eax
mov dword [esp], esi
mov dword [esp + 4], edi
mov eax, dword [esp + 0x254]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040acb0
lea eax, [esp + 0x500]
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x260]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x270]
mov dword [esp + 8], eax
mov edi, esi
mov dword [esp + 0xc], esi
mov eax, dword [esp + 0x3b0]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3b8]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.0041d8a0
mov dword [esp], edi
call fcn.004082e0
jmp 0x41046f
mov eax, ebx
and eax, 1
or ebx, 1
add ebx, eax
jmp 0x410378
mov eax, dword [esp + 0x260]
mov dword [esp], eax
call fcn.004082e0
jmp 0x41048f
mov eax, dword [esp + 0x270]
mov dword [esp], eax
call fcn.004082e0
jmp 0x4104a0
lea ecx, [esp + 0x500]
call fcn.00409a50
lea ecx, [esp + 0x500]
call fcn.004090f0
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x7c]
mov dword [esp], eax
call fcn.00436140
mov ebx, dword [esp + 0x2c]
jmp 0x4104ce
lea ecx, [esp + 0x3e0]
call fcn.00413240
jmp 0x4113d2
mov al, byte [esp + 0xc4]
mov byte [esp + 0x1c8], al
mov byte [esp + 0x2c8], 0xf8
mov byte [esp + 0x2c9], 9
mov eax, 2
mov byte [esp + eax + 0x2c8], 0
add eax, 1
cmp eax, 5
jne 0x410502
mov dword [esp + 0x28], esi
xor eax, eax
cmp eax, 5
jae 0x41054e
movzx edx, byte [esp + eax + 0x2c8]
mov ecx, eax
add ecx, 0xc2
mov esi, edx
xor esi, 0xffffffff
and ecx, esi
mov esi, 0x3d
sub esi, eax
and esi, edx
or ecx, esi
add cl, 0x36
mov byte [esp + eax + 0x2c8], cl
add eax, 1
jmp 0x410518
lea eax, [esp + 0x2c8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov dword [esp + 0x264], eax
mov al, byte [esp + 0xc0]
mov byte [esp + 0x1cc], al
mov byte [esp + 0x2c0], 0x1a
mov byte [esp + 0x2c1], 0x91
mov eax, 2
mov byte [esp + eax + 0x2c0], 0
add eax, 1
cmp eax, 8
jne 0x41058f
xor eax, eax
cmp eax, 8
jae 0x410614
movzx edx, byte [esp + eax + 0x2c0]
mov ecx, eax
add ecx, 0xf6f6e31c
mov edi, ecx
and edi, edx
mov esi, edi
and esi, 0xfd
mov ebx, edi
and ebx, 2
xor ebx, 2
imul ebx, esi
mov esi, edi
and esi, 2
or edi, 2
imul edi, esi
add edi, ebx
add ecx, edx
sub ecx, edi
mov edx, ecx
and edx, 0x71
mov esi, ecx
and esi, 0x71
mov edi, ecx
and edi, 2
xor edi, 2
imul edi, esi
mov esi, ecx
and esi, 2
or edx, 2
imul edx, esi
add edx, edi
xor ecx, 0x73
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x2c0], cl
add eax, 1
jmp 0x4105a1
lea eax, [esp + 0x2c0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004018a0
mov ebx, eax
mov edx, dword [esp + 0x264]
test edx, edx
sete al
test ebx, ebx
sete cl
or al, cl
test al, 1
mov esi, dword [esp + 0x28]
jne 0x41064a
jmp 0x410653
mov ebx, dword [esp + 0x2c]
jmp 0x410de9
mov dword [esp], edx
call fcn.004130e0
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410678
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
xor ecx, ecx
mov dword [esp + 0x298], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov eax, dword [esp + 0x264]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040acb0
mov dword [esp], ebx
call fcn.004130e0
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4106cd
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
xor ecx, ecx
mov dword [esp + 0x294], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040acb0
mov al, byte [esp + 0xbc]
mov byte [esp + 0x1d0], al
mov byte [esp + 0x2b8], 0x96
mov byte [esp + 0x2b9], 0x3b
mov eax, 2
mov byte [esp + eax + 0x2b8], 0
add eax, 1
cmp eax, 6
jne 0x410719
xor eax, eax
cmp eax, 6
jae 0x41078a
movzx edx, byte [esp + eax + 0x2b8]
mov ecx, eax
add ecx, 0x914bae0b
mov esi, 0xf4
sub esi, eax
and esi, edx
xor edx, 0xffffffff
and ecx, edx
or ecx, esi
mov esi, dword [esp + 0x28]
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, 0xc8
add ecx, edx
mov byte [esp + eax + 0x2b8], cl
mov ecx, eax
add ecx, 1
mov edx, eax
xor edx, 0xffffffff
or edx, 1
add edx, ecx
or eax, 0xd5a1ecc1
add eax, edx
add eax, 0x2a5e1340
jmp 0x41072b
lea eax, [esp + 0x2b8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov ebx, eax
mov dword [esp + 0x74], 0
cmp ebx, 0
je 0x4107fd
mov dword [esp], ebx
call fcn.004130e0
mov edi, eax
add edi, 1
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4107d5
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
xor ecx, ecx
mov dword [esp + 0x74], eax
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040acb0
jmp 0x4107fd
mov al, byte [esp + 0xb8]
mov byte [esp + 0x1d4], al
mov byte [esp + 0x2b0], 0xbe
mov byte [esp + 0x2b1], 0x21
mov eax, 2
mov byte [esp + eax + 0x2b0], 0
add eax, 1
cmp eax, 5
jne 0x410820
xor eax, eax
cmp eax, 5
jae 0x410864
movzx edx, byte [esp + eax + 0x2b0]
mov ecx, eax
add ecx, 0xab256b38
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
mov esi, dword [esp + 0x28]
add cl, 0xe8
mov byte [esp + eax + 0x2b0], cl
add eax, 1
jmp 0x410832
lea eax, [esp + 0x2b0]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov edi, eax
mov dword [esp + 0x70], 0
cmp edi, 0
je 0x4108d5
mov dword [esp], edi
call fcn.004130e0
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4108af
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
xor ecx, ecx
mov dword [esp + 0x70], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040acb0
mov al, byte [esp + 0xb4]
mov byte [esp + 0x1d8], al
mov byte [esp + 0x230], 0xcf
mov byte [esp + 0x231], 0xf3
mov byte [esp + 0x232], 0x6a
mov eax, 3
mov ebx, dword [ebp + 8]
mov byte [esp + eax + 0x230], 0
add eax, 1
cmp eax, 8
jne 0x410903
xor eax, eax
cmp eax, 8
jae 0x410982
movzx edi, byte [esp + eax + 0x230]
mov ecx, eax
shl ecx, 1
and ecx, 0x86a4292e
mov edx, eax
xor edx, 0xc3521497
add edx, ecx
mov ecx, edi
and ecx, 0x5a
xor ecx, 0x5a
mov esi, edi
and esi, 0x5a
xor esi, 0x168f595a
or ecx, esi
and edi, 0xa5
or ecx, edi
xor edx, 0x168f595a
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
mov esi, dword [esp + 0x28]
mov edx, ecx
shl edx, 1
and edx, 0x18
xor ecx, 0xc
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x230], cl
add eax, 1
jmp 0x410915
lea eax, [esp + 0x230]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401970
xor ebx, ebx
cmp eax, 0
mov edi, 0
je 0x410cd4
mov dword [esp + 0x27c], eax
mov dword [esp], eax
call fcn.00401b80
mov ebx, eax
mov ecx, 0xc
mov eax, ebx
mul ecx
seto cl
add eax, 4
setb dl
or cl, dl
mov edx, 0xffffffff
test cl, 1
jne 0x4109d6
mov edx, eax
mov dword [esp], edx
call fcn.004082d0
mov dword [eax], ebx
add eax, 4
cmp ebx, 0
sete cl
jmp 0x4109eb
test cl, 1
mov dword [esp + 0x6c], eax
mov dword [esp + 0x280], ebx
jne 0x410a1d
jmp 0x4109fd
imul ecx, ebx, 0xc
mov ebx, eax
mov edi, ebx
add edi, ecx
mov ecx, ebx
call fcn.00413250
add ebx, 0xc
cmp ebx, edi
jne 0x410a06
mov ebx, dword [esp + 0x280]
jmp 0x410a1d
mov eax, dword [esp + 0x27c]
xor edi, edi
jmp 0x410a28
cmp edi, ebx
jb 0x410a35
mov edi, dword [esp + 0x6c]
jmp 0x410cd4
mov dword [esp], eax
mov dword [esp + 0x39c], edi
mov dword [esp + 4], edi
call fcn.00401b90
mov ebx, eax
mov al, byte [esp + 0xb0]
mov byte [esp + 0x1dc], al
mov byte [esp + 0x228], 0x5b
mov byte [esp + 0x229], 0x41
mov byte [esp + 0x22a], 0xfe
mov eax, 3
mov byte [esp + eax + 0x228], 0
add eax, 1
cmp eax, 6
jne 0x410a75
xor eax, eax
cmp eax, 6
jae 0x410aa9
mov cl, byte [esp + eax + 0x228]
mov dl, al
add dl, 0xd5
xor dl, cl
add dl, 0xd7
mov byte [esp + eax + 0x228], dl
add eax, 1
jmp 0x410a87
lea eax, [esp + 0x228]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.004018a0
mov dword [esp + 0x394], eax
mov al, byte [esp + 0xac]
mov byte [esp + 0x1e0], al
mov byte [esp + 0x220], 0x2d
mov byte [esp + 0x221], 7
mov byte [esp + 0x222], 0x8e
mov eax, 3
mov byte [esp + eax + 0x220], 0
add eax, 1
cmp eax, 5
jne 0x410aee
xor eax, eax
cmp eax, 5
jae 0x410b22
mov cl, byte [esp + eax + 0x220]
mov dl, al
add dl, 0x62
xor dl, cl
add dl, 0x16
mov byte [esp + eax + 0x220], dl
add eax, 1
jmp 0x410b00
lea eax, [esp + 0x220]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.004018a0
mov dword [esp + 0x38c], eax
mov al, byte [esp + 0xa0]
mov byte [esp + 0x1e4], al
mov byte [esp + 0xa4], 0x18
mov byte [esp + 0xa5], 0x5f
mov byte [esp + 0xa6], 0x5c
mov byte [esp + 0xa7], 0xb9
mov eax, 4
mov byte [esp + eax + 0xa4], 0
add eax, 1
cmp eax, 8
jne 0x410b6f
xor eax, eax
cmp eax, 8
jae 0x410bb5
mov dl, byte [esp + eax + 0xa4]
movzx esi, dl
mov ecx, eax
add ecx, 0x951febdf
mov edi, ecx
and edi, esi
mov esi, dword [esp + 0x28]
shl edi, 1
sub ecx, edi
add cl, dl
add cl, 0xa5
mov byte [esp + eax + 0xa4], cl
add eax, 1
jmp 0x410b81
lea eax, [esp + 0xa4]
mov edi, ebx
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.004019d0
xor ebx, ebx
cmp eax, 0
setg byte [esp + 0x36]
mov al, byte [esp + 0x94]
mov byte [esp + 0x1e8], al
mov byte [esp + 0x98], 0x41
mov byte [esp + 0x99], 0x50
mov byte [esp + 0x9a], 0x47
mov byte [esp + 0x9b], 0xc9
mov eax, 4
mov byte [esp + eax + 0x98], 0
add eax, 1
cmp eax, 8
jne 0x410c07
xor eax, eax
cmp eax, 8
jae 0x410c62
movzx edx, byte [esp + eax + 0x98]
mov ecx, edx
shl ecx, 1
xor ecx, 0xffffffff
add ecx, edx
mov esi, edx
shl esi, 1
xor esi, 0xffffffff
add esi, edx
and ecx, esi
mov esi, 0x2c
sub esi, eax
or ecx, esi
mov esi, eax
add esi, 0xd3
or esi, edx
and ecx, esi
mov esi, dword [esp + 0x28]
add cl, 0xe1
mov byte [esp + eax + 0x98], cl
add eax, 1
jmp 0x410c19
lea eax, [esp + 0x98]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.004019d0
xor edx, edx
cmp eax, 0
setg dl
mov edi, dword [esp + 0x39c]
imul eax, edi, 0xc
mov ecx, dword [esp + 0x6c]
add ecx, eax
mov eax, dword [esp + 0x394]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x38c]
mov dword [esp], eax
and edx, 1
mov dword [esp + 0xc], edx
mov al, byte [esp + 0x36]
mov bl, al
and ebx, 1
mov dword [esp + 8], ebx
call fcn.00413270
sub esp, 0x10
sub edi, 0xffffffff
mov ebx, dword [esp + 0x280]
mov eax, dword [esp + 0x27c]
jmp 0x410a28
mov eax, dword [esp + 0x294]
mov dword [esp + 0x3d0], eax
mov eax, dword [esp + 0x298]
mov dword [esp + 0x3d4], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x3d8], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x3dc], eax
lea ecx, [esp + 0x478]
mov dword [esp], 2
call fcn.00409010
sub esp, 4
lea eax, [esp + 0x478]
lea ecx, [esp + 0x3d0]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edi
mov dword [esp + 0xc], ebx
call fcn.004138f0
lea ecx, [esp + 0x478]
call fcn.00409a50
cmp edi, 0
je 0x410d89
mov ebx, edi
add ebx, 0xfffffffc
imul eax, dword [edi - 4], 0xc
mov ecx, edi
mov edi, ecx
add edi, eax
mov dword [esp + 0x6c], ecx
cmp ecx, edi
je 0x410d81
jmp 0x410d68
add edi, 0xfffffff4
mov ecx, edi
call fcn.004133e0
cmp edi, dword [esp + 0x6c]
sete al
test al, 1
jne 0x410d7f
jmp 0x410d68
jmp 0x410d81
mov dword [esp], ebx
call fcn.004082e0
mov ebx, dword [esp + 0x2c]
jmp 0x410d8f
mov eax, dword [esp + 0x294]
mov dword [esp], eax
call fcn.004082e0
jmp 0x410da0
mov eax, dword [esp + 0x298]
mov dword [esp], eax
call fcn.004082e0
cmp dword [esp + 0x74], 0
mov eax, dword [esp + 0x70]
je 0x410dcc
mov eax, dword [esp + 0x74]
mov dword [esp], eax
call fcn.004082e0
mov eax, dword [esp + 0x70]
jmp 0x410dcc
cmp eax, 0
je 0x410ddb
mov dword [esp], eax
call fcn.004082e0
jmp 0x410ddb
lea ecx, [esp + 0x478]
call fcn.004090f0
jmp 0x410de9
jmp 0x4113d2
mov al, byte [esp + 0x90]
mov byte [esp + 0x1ec], al
mov byte [esp + 0x2a8], 0x74
mov byte [esp + 0x2a9], 0xe7
mov eax, 2
mov byte [esp + eax + 0x2a8], 0
add eax, 1
cmp eax, 6
jne 0x410e11
mov dword [esp + 0x28], esi
xor eax, eax
cmp eax, 6
jae 0x410e84
movzx edi, byte [esp + eax + 0x2a8]
mov edx, eax
add edx, 0x393686d9
mov esi, edi
xor esi, 0xffffffff
mov ecx, edx
and ecx, esi
mov esi, eax
shl esi, 1
add esi, 0xb3
sub edx, esi
and edx, edi
or ecx, edx
add ecx, 0xcee9e29c
mov edx, ecx
shl edx, 1
and edx, 0x4e
xor ecx, 0x27
add ecx, edx
mov byte [esp + eax + 0x2a8], cl
mov ecx, eax
xor ecx, 0x2d0734cb
shl eax, 1
and eax, 8
sub eax, ecx
add eax, 0x2d0734cc
jmp 0x410e27
lea eax, [esp + 0x2a8]
mov ecx, dword [esp + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov dword [esp + 0x25c], eax
mov al, byte [esp + 0x8c]
mov byte [esp + 0x1f0], al
mov byte [esp + 0x2a0], 0x9a
mov byte [esp + 0x2a1], 0x1b
mov eax, 2
mov byte [esp + eax + 0x2a0], 0
add eax, 1
cmp eax, 8
jne 0x410ec5
xor eax, eax
cmp eax, 8
jae 0x410f05
movzx edx, byte [esp + eax + 0x2a0]
mov ecx, eax
add ecx, 0xc5e8f4fb
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
add cl, 0x19
mov byte [esp + eax + 0x2a0], cl
add eax, 1
jmp 0x410ed7
lea eax, [esp + 0x2a0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004018a0
mov edi, eax
mov edx, dword [esp + 0x25c]
test edx, edx
sete al
test edi, edi
sete cl
or al, cl
test al, 1
mov esi, dword [esp + 0x28]
jne 0x410f3b
jmp 0x410f40
jmp 0x4113d0
mov dword [esp], edx
call fcn.004130e0
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 0x410f6b
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
xor ecx, ecx
mov dword [esp + 0x28c], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x25c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040acb0
mov dword [esp], edi
call fcn.004130e0
mov ebx, eax
add ebx, 1
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410fc0
mov ecx, eax
mov dword [esp], ecx
call fcn.004082d0
xor ecx, ecx
mov dword [esp + 0x288], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040acb0
mov al, byte [esp + 0x88]
mov byte [esp + 0x1f4], al
mov byte [esp + 0x218], 0xbd
mov byte [esp + 0x219], 0xa9
mov byte [esp + 0x21a], 0x22
mov eax, 3
mov byte [esp + eax + 0x218], 0
add eax, 1
cmp eax, 7
jne 0x411014
xor eax, eax
mov ebx, dword [ebp + 8]
cmp eax, 7
jae 0x411078
movzx edx, byte [esp + eax + 0x218]
mov ecx, 0xc7
sub ecx, eax
or ecx, edx
mov edi, 0x9b8918c7
sub edi, eax
mov esi, 0xc7
sub esi, eax
mov ebx, edi
xor ebx, esi
add edi, ebx
mov ebx, dword [ebp + 8]
mov esi, edx
xor esi, 0xffffffff
or edi, esi
add edi, edx
mov edx, 0xfe
sub edx, edi
and ecx, edx
mov dl, 0xe7
sub dl, cl
mov byte [esp + eax + 0x218], dl
add eax, 1
jmp 0x411029
lea eax, [esp + 0x218]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401970
xor edi, edi
cmp eax, 0
mov ecx, 0
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
je 0x41130a
mov dword [esp + 0x398], eax
mov dword [esp], eax
call fcn.00401b80
mov ecx, 8
mov edi, eax
mul ecx
seto dl
add eax, 4
setb ch
mov cl, dl
xor cl, 0xff
xor dl, 0xff
or cl, dl
mov dl, ch
xor dl, 0xff
xor ch, 0xff
or dl, ch
xor cl, 0xff
xor dl, 0xff
or cl, dl
mov edx, 0xffffffff
test cl, 1
jne 0x4110ec
mov edx, eax
mov dword [esp], edx
call fcn.004082d0
mov ecx, edi
mov dword [eax], ecx
add eax, 4
cmp ecx, 0
mov dword [esp + 0x68], ecx
mov dword [esp + 0x64], eax
je 0x411129
shl ecx, 3
mov edi, eax
add edi, ecx
mov ebx, eax
mov ecx, ebx
call fcn.00413410
add ebx, 8
cmp ebx, edi
jne 0x411111
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x68]
jmp 0x411129
xor edi, edi
jmp 0x41112d
cmp edi, ecx
mov eax, dword [esp + 0x398]
jb 0x411141
mov edi, dword [esp + 0x64]
jmp 0x41130a
mov dword [esp], eax
mov dword [esp + 0x390], edi
mov dword [esp + 4], edi
call fcn.00401b90
mov dword [esp + 0x268], eax
mov al, byte [esp + 0x84]
mov byte [esp + 0x1f8], al
mov byte [esp + 0x38], 0xd7
mov byte [esp + 0x39], 0xd9
mov byte [esp + 0x3a], 0x4a
mov eax, 3
mov byte [esp + eax + 0x38], 0
add eax, 1
cmp eax, 4
jne 0x41117d
xor edi, edi
cmp edi, 4
jae 0x411228
movzx eax, byte [esp + edi + 0x38]
mov dword [esp + 0x368], eax
mov eax, edi
add eax, 0xcc1085f3
mov ebx, 0x33ef7a0c
sub ebx, edi
mov ecx, 0x33ef7a0c
sub ecx, edi
mov dword [esp + 0x250], ecx
mov edx, ebx
and edx, 0x9e
mov esi, eax
and esi, 0x61
mov ecx, dword [esp + 0x250]
and ecx, 0x9e
and eax, 0x61
or edx, esi
or ecx, eax
xor edx, ecx
or ebx, dword [esp + 0x250]
xor ebx, 0xffffffff
or edx, ebx
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x368]
and edx, eax
xor eax, 0xffffffff
mov ecx, eax
mov eax, 0x33ef7a0c
sub eax, edi
and eax, ecx
or edx, eax
mov eax, 0x3ad623f
sub eax, edx
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [esp + edi + 0x38], al
add edi, 1
jmp 0x41118c
lea eax, [esp + 0x38]
mov ecx, dword [esp + 0x268]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov dword [esp + 0x374], eax
mov al, byte [esp + 0x80]
mov byte [esp + 0x1fc], al
mov byte [esp + 0x210], 0xa5
mov byte [esp + 0x211], 0x8f
mov byte [esp + 0x212], 0xf6
mov eax, 3
mov byte [esp + eax + 0x210], 0
add eax, 1
cmp eax, 5
jne 0x411271
xor eax, eax
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x390]
cmp eax, 5
jae 0x4112c3
mov dl, byte [esp + eax + 0x210]
mov esi, eax
shl esi, 1
and esi, 0xfc
mov ecx, eax
xor ecx, 0xfe
add ecx, esi
mov esi, dword [esp + 0x28]
xor cl, dl
add cl, 0xa
mov byte [esp + eax + 0x210], cl
add eax, 1
jmp 0x41128e
lea eax, [esp + 0x210]
mov ecx, dword [esp + 0x268]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004018a0
mov edx, edi
shl edx, 3
mov ecx, dword [esp + 0x64]
add ecx, edx
mov dword [esp], eax
mov eax, dword [esp + 0x374]
mov dword [esp + 4], eax
call fcn.00413420
sub esp, 8
add edi, 1
mov ecx, dword [esp + 0x68]
jmp 0x41112d
mov dword [esp + 0x68], ecx
lea ecx, [esp + 0x3f0]
mov dword [esp], 3
call fcn.00409010
sub esp, 4
lea eax, [esp + 0x3f0]
mov dword [esp], eax
mov eax, dword [esp + 0x28c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x288]
mov dword [esp + 8], eax
mov dword [esp + 0xc], edi
mov eax, dword [esp + 0x68]
mov dword [esp + 0x10], eax
call fcn.0041bb20
lea ecx, [esp + 0x3f0]
call fcn.00409a50
cmp edi, 0
mov ecx, edi
je 0x4113a0
mov ebx, ecx
add ebx, 0xfffffffc
mov eax, dword [ebx]
shl eax, 3
mov edi, ecx
add edi, eax
cmp ecx, edi
je 0x411394
mov dword [esp + 0x64], ecx
jmp 0x411380
add edi, 0xfffffff8
mov ecx, edi
call fcn.004134e0
mov ecx, dword [esp + 0x64]
cmp edi, ecx
jne 0x411380
jmp 0x411394
mov dword [esp], ebx
call fcn.004082e0
mov ebx, dword [esp + 0x2c]
jmp 0x4113a2
mov eax, dword [esp + 0x28c]
mov dword [esp], eax
call fcn.004082e0
jmp 0x4113b3
mov eax, dword [esp + 0x288]
mov dword [esp], eax
call fcn.004082e0
jmp 0x4113c4
lea ecx, [esp + 0x3f0]
call fcn.004090f0
jmp 0x4113d2
jmp 0x4113d4
sub ebx, 0xffffffff
jmp 0x40e96f
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret