Function at 0x40fd4f
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x580
mov edi, dword [ebp + 8]
mov al, byte [esp + 0x19c]
mov byte [esp + 0x1a0], al
mov byte [esp + 0x62], 0x37
mov byte [esp + 0x63], 0x95
xor eax, eax
cmp eax, 2
jae 0x40f23a
movzx edx, byte [esp + eax + 0x62]
mov ecx, eax
add ecx, 0x4f8e0b34
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
add cl, 0x60
mov byte [esp + eax + 0x62], cl
mov ecx, eax
shl ecx, 1
or eax, ecx
xor eax, 1
jmp 0x40f20c
lea eax, [esp + 0x62]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401a90
mov esi, eax
cmp esi, 0
jne 0x40f258
xor eax, eax
jmp 0x411baf
xor edi, edi
jmp 0x40f25c
mov dword [esp], esi
call fcn.00401f40
cmp edi, eax
jb 0x40f26f
mov al, 1
jmp 0x411baf
mov dword [esp + 0x318], esi
mov dword [esp], esi
mov dword [esp + 4], edi
call fcn.00401f50
mov ebx, eax
mov al, byte [esp + 0x198]
mov byte [esp + 0x1a4], al
mov byte [esp + 0x60], 0xcd
mov byte [esp + 0x61], 0xba
xor eax, eax
mov dword [esp + 0x24], ebx
cmp eax, 2
jae 0x40f301
movzx edx, byte [esp + eax + 0x60]
mov esi, eax
add esi, 0xd97bd131
mov ecx, 0x6842ece
sub ecx, eax
and ecx, 0x45680e6
and esi, 0xfba97f19
or ecx, esi
xor ecx, edx
xor ecx, 0xe6
mov esi, eax
add esi, 0x31
and esi, edx
or ecx, esi
mov esi, eax
add esi, 0x31
mov ebx, edi
mov edi, eax
add edi, 0x31
or esi, edi
mov edi, ebx
mov ebx, dword [esp + 0x24]
and esi, edx
add ecx, 0x5a
sub ecx, esi
add cl, 0x1e
mov byte [esp + eax + 0x60], cl
add eax, 1
jmp 0x40f2a2
lea eax, [esp + 0x60]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e40
cmp eax, 0
setne al
xor al, 0xff
and al, 1
or al, 0
test al, 1
jne 0x40f32b
jmp 0x40f330
jmp 0x411b94
mov al, byte [esp + 0x194]
mov byte [esp + 0x1a8], al
mov byte [esp + 0x5e], 0x2b
mov byte [esp + 0x5f], 0xb0
xor eax, eax
cmp eax, 2
jae 0x40f382
movzx edx, byte [esp + eax + 0x5e]
mov ecx, eax
add ecx, 0x9f780087
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
mov edx, ecx
sub edx, esi
add edx, 0xc7
and ecx, 1
xor ecx, 1
or edx, 1
add edx, ecx
mov byte [esp + eax + 0x5e], dl
add eax, 1
jmp 0x40f34a
lea eax, [esp + 0x5e]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00401980
fnstcw word [esp + 0xb6]
movzx eax, word [esp + 0xb6]
or eax, 0xc00
mov word [esp + 0x272], ax
fldcw word [esp + 0x272]
fistp dword [esp + 0x32c]
fldcw word [esp + 0xb6]
mov eax, dword [esp + 0x32c]
mov ecx, eax
sub ecx, 3
ja 0x411b92
mov eax, dword [eax*4 + 0x43e588]
jmp eax
mov al, byte [esp + 0x190]
mov byte [esp + 0x1ac], al
mov byte [esp + 0x5c], 0xd2
mov byte [esp + 0x5d], 0x43
xor eax, eax
cmp eax, 2
jae 0x40f429
mov dl, byte [esp + eax + 0x5c]
mov esi, eax
add esi, 0x52
mov ecx, 0x2d
sub ecx, eax
and ecx, 0xbb
and esi, 0x44
or ecx, esi
xor cl, dl
xor cl, 0xbb
add cl, 0x70
mov byte [esp + eax + 0x5c], cl
add eax, 1
jmp 0x40f3f8
lea eax, [esp + 0x5c]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e40
cmp eax, 0
je 0x40f6c3
mov al, byte [esp + 0x18c]
mov byte [esp + 0x1b0], al
mov byte [esp + 0xa2], 0xd7
mov byte [esp + 0xa3], 0xd3
mov byte [esp + 0xa4], 0xd4
mov byte [esp + 0xa5], 0xd5
xor eax, eax
cmp eax, 4
jae 0x40f49c
mov cl, byte [esp + eax + 0xa2]
mov dl, al
add dl, 0xc2
xor dl, cl
add dl, 0xf0
mov byte [esp + eax + 0xa2], dl
add eax, 1
jmp 0x40f47a
mov eax, dword [esp + 0xa2]
mov dword [esp + 0x20], edi
mov cl, byte [esp + 0x188]
mov byte [esp + 0x1b4], cl
mov byte [esp + 0x5a], 0xe1
mov byte [esp + 0x5b], 0x4d
xor ecx, ecx
cmp ecx, 2
jae 0x40f501
movzx edx, byte [esp + ecx + 0x5a]
mov esi, 0xd3
sub esi, ecx
mov edi, 0xd3
sub edi, ecx
and esi, edi
xor esi, 0xffffffff
mov edi, edx
and edi, esi
xor edx, 0xffffffff
mov ebx, 0xd3
sub ebx, ecx
and ebx, edx
or ebx, edi
mov dl, 0x9f
sub dl, bl
mov ebx, dword [esp + 0x24]
mov byte [esp + ecx + 0x5a], dl
add ecx, 1
jmp 0x40f4c1
lea ecx, [esp + 0x5a]
mov dword [esp], ebx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.00401e40
cmp eax, 0
mov edi, dword [esp + 0x20]
je 0x40f6c3
mov al, byte [esp + 0x184]
mov byte [esp + 0x1b8], al
mov byte [esp + 0x58], 0x4e
mov byte [esp + 0x59], 0xf5
xor eax, eax
cmp eax, 2
jae 0x40f593
movzx esi, byte [esp + eax + 0x58]
mov edx, 0x9b9a0cab
sub edx, eax
or edx, esi
mov ecx, 0xab
sub ecx, eax
mov edi, 0xab
sub edi, eax
or ecx, edi
mov edi, 0xab
sub edi, eax
or ecx, edi
mov edi, dword [esp + 0x20]
and ecx, esi
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
and edx, 0x5f
mov esi, ecx
and esi, 0x5f
xor esi, 0xffffffff
add ecx, 0x60
add ecx, esi
add edx, ecx
add dl, 1
mov byte [esp + eax + 0x58], dl
add eax, 1
jmp 0x40f53c
lea eax, [esp + 0x58]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e40
cmp eax, 0
setne al
test al, 1
jne 0x40f5ba
jmp 0x40f6c3
mov al, byte [esp + 0x180]
mov byte [esp + 0x1bc], al
mov byte [esp + 0x56], 0x73
mov byte [esp + 0x57], 0xc8
xor eax, eax
cmp eax, 2
jae 0x40f60e
movzx esi, byte [esp + eax + 0x56]
mov ecx, 0x50
sub ecx, eax
or ecx, esi
mov edx, 0x50
sub edx, eax
mov edi, 0x50
sub edi, eax
or edx, edi
mov edi, dword [esp + 0x20]
and edx, esi
xor ecx, 0xffffffff
or edx, ecx
add dl, 0x88
mov byte [esp + eax + 0x56], dl
add eax, 1
jmp 0x40f5d4
lea eax, [esp + 0x56]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e40
cmp eax, 0
je 0x40f6c3
mov al, byte [esp + 0x17c]
mov byte [esp + 0x1c0], al
mov byte [esp + 0x87], 0xa6
mov byte [esp + 0x88], 0xb2
mov byte [esp + 0x89], 0xc2
xor eax, eax
cmp eax, 3
jae 0x40f690
movzx edx, byte [esp + eax + 0x87]
mov ecx, eax
xor ecx, 0x40
mov esi, eax
xor esi, 0x40
or ecx, esi
and ecx, edx
shl ecx, 1
mov ebx, eax
add ebx, 0xc0
add ebx, edx
sub ebx, ecx
mov byte [esp + eax + 0x87], bl
mov ebx, dword [esp + 0x24]
add eax, 1
jmp 0x40f657
lea eax, [esp + 0x87]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e40
cmp eax, 0
setne al
xor al, 0xff
and al, 1
or al, 0
xor al, 0
test al, 1
jne 0x411b92
jmp 0x40f6c8
jmp 0x411b92
mov al, byte [esp + 0x178]
mov byte [esp + 0x1c4], al
mov byte [esp + 0x54], 0xd8
mov byte [esp + 0x55], 0x29
xor eax, eax
cmp eax, 2
jae 0x40f723
movzx esi, byte [esp + eax + 0x54]
mov edx, eax
add edx, 0x925c6f68
mov ecx, 0x17
sub ecx, eax
and ecx, 0x4b
mov edi, edx
and edi, 0xb4
or ecx, edi
xor ecx, 0xb4
and ecx, esi
xor esi, 0xffffffff
and edx, esi
or ecx, edx
add cl, 0xc0
mov byte [esp + eax + 0x54], cl
add eax, 1
jmp 0x40f6e2
lea eax, [esp + 0x54]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x2a0], eax
mov al, byte [esp + 0x174]
mov byte [esp + 0x1c8], al
mov byte [esp + 0x52], 0x32
mov byte [esp + 0x53], 0xa0
xor eax, eax
cmp eax, 2
jae 0x40f794
movzx edx, byte [esp + eax + 0x52]
mov esi, eax
add esi, 0xe1ff0817
or esi, edx
mov ecx, eax
add ecx, 0x17
and ecx, edx
mov edx, esi
xor edx, ecx
xor ecx, esi
shl ecx, 1
sub ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x8e
xor ecx, 0x47
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x52], cl
add eax, 1
jmp 0x40f754
lea eax, [esp + 0x52]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401a90
mov dword [esp + 0x2a4], eax
mov al, byte [esp + 0x170]
mov byte [esp + 0x1cc], al
mov byte [esp + 0x50], 0xf1
mov byte [esp + 0x51], 0x7c
xor eax, eax
cmp eax, 2
jae 0x40f7eb
movzx edx, byte [esp + eax + 0x50]
mov ecx, eax
add ecx, 0x63
or ecx, edx
mov esi, eax
add esi, 0x63
and esi, edx
sub ecx, esi
add cl, 0xe8
mov byte [esp + eax + 0x50], cl
add eax, 1
jmp 0x40f7c5
lea eax, [esp + 0x50]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov edi, eax
mov al, byte [esp + 0x16c]
mov byte [esp + 0x1d0], al
mov byte [esp + 0x4e], 0x42
mov byte [esp + 0x4f], 0xe7
xor eax, eax
cmp eax, 2
jae 0x40f853
movzx ecx, byte [esp + eax + 0x4e]
mov edx, eax
add edx, 1
mov esi, eax
xor esi, 0xffffffff
or esi, 0x3d788c56
add esi, edx
mov edx, eax
or edx, 0x3d788c56
add edx, esi
mov esi, edx
and esi, ecx
shl esi, 1
add edx, ecx
sub edx, esi
add dl, 0x50
mov byte [esp + eax + 0x4e], dl
add eax, 1
jmp 0x40f817
lea eax, [esp + 0x4e]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00401980
fnstcw word [esp + 0xb4]
movzx eax, word [esp + 0xb4]
or eax, 0xc00
mov word [esp + 0x270], ax
fldcw word [esp + 0x270]
fistp dword [esp + 0x320]
fldcw word [esp + 0xb4]
mov eax, dword [esp + 0x320]
mov dword [esp + 0x304], eax
mov al, byte [esp + 0x168]
mov byte [esp + 0x1d4], al
mov byte [esp + 0x84], 4
mov byte [esp + 0x85], 0xf0
mov byte [esp + 0x86], 0x64
xor eax, eax
cmp eax, 3
jae 0x40f913
movzx edx, byte [esp + eax + 0x84]
mov ecx, eax
add ecx, 0xfe3d41f2
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
mov edx, ecx
shl edx, 1
and edx, 0xde
mov esi, ecx
shl esi, 1
and esi, 0xde
add ecx, 0x6f
sub ecx, esi
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x84], cl
add eax, 1
jmp 0x40f8ca
lea eax, [esp + 0x84]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00401980
fnstcw word [esp + 0xb2]
movzx eax, word [esp + 0xb2]
or eax, 0xc00
mov word [esp + 0x26e], ax
fldcw word [esp + 0x26e]
fistp dword [esp + 0x31c]
fldcw word [esp + 0xb2]
mov eax, dword [esp + 0x31c]
mov dword [esp + 0x2fc], eax
mov al, byte [esp + 0x164]
mov byte [esp + 0x1d8], al
mov byte [esp + 0x81], 0xc3
mov byte [esp + 0x82], 0xda
mov byte [esp + 0x83], 0x67
xor eax, eax
cmp eax, 3
jae 0x40f9d5
movzx ecx, byte [esp + eax + 0x81]
mov esi, eax
shl esi, 1
and esi, 0x8350f61a
mov edx, eax
xor edx, 0xc1a87b0d
add edx, esi
mov esi, edx
shl esi, 1
xor esi, 0xffffffff
mov ebx, edx
add ebx, esi
and ebx, ecx
xor ecx, 0xffffffff
and edx, ecx
or ebx, edx
add bl, 0x98
mov byte [esp + eax + 0x81], bl
mov ebx, dword [esp + 0x24]
add eax, 1
jmp 0x40f98d
mov dword [esp + 0x300], edi
lea eax, [esp + 0x81]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401b90
cmp eax, 0
setg byte [esp + 0x66]
mov eax, dword [esp + 0x2a0]
mov dword [esp], eax
call fcn.00413bf0
mov esi, eax
mov dword [esp + 0x280], esi
sub esi, 0xffffffff
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40fa2a
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], esi
mov eax, dword [esp + 0x2a0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a950
xor eax, eax
lea eax, [esp + 0x160]
mov dword [esp], 0
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x280]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x447600]
sub esp, 0x18
mov cl, byte [esp + 0x15c]
mov byte [esp + 0x1dc], cl
mov byte [esp + 0x9e], 0x56
mov byte [esp + 0x9f], 0xb6
mov byte [esp + 0xa0], 0xb7
mov byte [esp + 0xa1], 0xc8
xor ecx, ecx
cmp ecx, 4
jae 0x40faef
movzx esi, byte [esp + ecx + 0x9e]
mov edx, ecx
add edx, 0xcb1adc5d
mov ebx, edx
and ebx, esi
shl ebx, 1
add edx, esi
sub edx, ebx
add dl, 0x18
mov byte [esp + ecx + 0x9e], dl
add ecx, 1
jmp 0x40fac1
mov ecx, dword [esp + 0x9e]
cmp eax, ecx
je 0x40fb0d
jmp 0x40fafc
mov dword [esp], edi
call fcn.00408010
mov edi, dword [esp + 0x20]
jmp 0x40fd4a
mov eax, dword [esp + 0x160]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40fb2a
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov esi, dword [0x447600]
mov ecx, dword [esp + 0x160]
xor edx, edx
lea edx, [esp + 0x160]
mov dword [esp], 0
mov dword [esp + 4], edi
mov ebx, dword [esp + 0x280]
mov dword [esp + 8], ebx
mov dword [esp + 0x294], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call esi
sub esp, 0x18
cmp eax, 0
jge 0x40fb8e
jmp 0x40fb7d
mov dword [esp], edi
call fcn.00408010
mov edi, dword [esp + 0x20]
jmp 0x40fd48
jmp 0x40fb90
mov dword [esp], edi
call fcn.00408010
mov edi, dword [esp + 0x300]
jmp 0x40fba1
mov dword [esp], edi
call fcn.00413bf0
mov esi, eax
add esi, 1
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40fbc6
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
xor ecx, ecx
mov dword [esp + 0x28c], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a950
lea ecx, [esp + 0x4f0]
mov dword [esp], 1
call fcn.00408ba0
sub esp, 4
xor esi, esi
mov eax, dword [esp + 0x2a4]
mov dword [esp], eax
call fcn.00401f40
cmp esi, eax
jb 0x40fc1f
jmp 0x40fd08
mov eax, dword [esp + 0x2a4]
mov dword [esp], eax
mov dword [esp + 4], esi
call fcn.00401f20
mov dword [esp], eax
call fcn.00401960
mov ebx, eax
cmp ebx, 0
sete al
test al, 1
jne 0x40fc48
jmp 0x40fc4d
jmp 0x40fd00
mov dword [esp + 0x2c8], esi
mov dword [esp], ebx
call fcn.00413bf0
mov esi, eax
add esi, 1
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x40fc79
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], esi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040a950
mov eax, dword [esp + 0x304]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x2fc]
mov dword [esp + 0x10], eax
mov esi, edi
mov dword [esp + 0xc], edi
mov eax, dword [esp + 0x294]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28c]
mov dword [esp + 4], eax
lea eax, [esp + 0x4f0]
mov dword [esp], eax
xor eax, eax
mov cl, byte [esp + 0x66]
mov al, cl
and eax, 1
mov dword [esp + 0x18], eax
call fcn.0041ff60
jmp 0x40fcef
mov dword [esp], esi
call fcn.00408010
mov esi, dword [esp + 0x2c8]
jmp 0x40fd00
sub esi, 0xffffffff
jmp 0x40fc07
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x28c]
mov dword [esp], eax
call fcn.00408010
jmp 0x40fd1d
jmp 0x40fd1f
mov eax, dword [esp + 0x294]
mov dword [esp], eax
call fcn.00408010
jmp 0x40fd30
lea ecx, [esp + 0x4f0]
call fcn.00409790
lea ecx, [esp + 0x4f0]
call fcn.00408c80
jmp 0x40fd4a
jmp 0x411b92
mov al, byte [esp + 0x158]
mov byte [esp + 0x1e0], al
mov byte [esp + 0x4c], 0xd
mov byte [esp + 0x4d], 0xeb
xor eax, eax
mov dword [esp + 0x20], edi
cmp eax, 2
jae 0x40fdd1
movzx edx, byte [esp + eax + 0x4c]
mov ecx, eax
add ecx, 0xcc24113a
xor ecx, edx
mov edx, ecx
and edx, 0x9edf762d
mov edi, ecx
and edi, 0x9edf762d
mov esi, ecx
and esi, 2
xor esi, 2
imul esi, edi
mov edi, ecx
and edi, 2
or edx, 2
imul edx, edi
add edx, esi
mov esi, ecx
shl esi, 1
and esi, 0x5e
add ecx, 0x9edf762f
mov edi, ecx
sub edi, esi
add edi, edx
and ecx, 1
or edi, 1
add ecx, edi
mov edi, dword [esp + 0x20]
mov byte [esp + eax + 0x4c], cl
add eax, 1
jmp 0x40fd6d
lea eax, [esp + 0x4c]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e40
cmp eax, 0
je 0x4100d4
mov al, byte [esp + 0x154]
mov byte [esp + 0x1e4], al
mov byte [esp + 0x4a], 0xf1
mov byte [esp + 0x4b], 2
xor eax, eax
cmp eax, 2
jae 0x40fe71
movzx edx, byte [esp + eax + 0x4a]
mov esi, eax
and esi, 0xb049deb7
xor esi, 0xb049deb7
mov ecx, eax
and ecx, 0x4fb62148
sub ecx, esi
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
mov edx, ecx
shl edx, 1
and edx, 0x6e
mov esi, ecx
shl esi, 1
and esi, 0x49deb6e
add ecx, 0x824ef5b7
mov edi, ecx
sub edi, esi
add edi, edx
mov edx, ecx
and edx, 1
and ecx, 1
xor edi, 1
or ecx, edi
mov edi, dword [esp + 0x20]
add edx, ecx
mov byte [esp + eax + 0x4a], dl
add eax, 1
jmp 0x40fe0c
lea eax, [esp + 0x4a]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e40
cmp eax, 0
je 0x4100d4
mov al, byte [esp + 0x150]
mov byte [esp + 0x1e8], al
mov byte [esp + 0x48], 0xeb
mov byte [esp + 0x49], 0x47
xor eax, eax
cmp eax, 2
jae 0x40fedb
movzx edx, byte [esp + eax + 0x48]
mov ecx, eax
add ecx, 0xed3c72f6
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x9e
xor ecx, 0x4f
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x48], cl
add eax, 1
jmp 0x40feac
lea eax, [esp + 0x48]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 5
call fcn.00401e40
cmp eax, 0
je 0x4100d4
mov al, byte [esp + 0x14c]
mov byte [esp + 0x1ec], al
mov byte [esp + 0x46], 0xb4
mov byte [esp + 0x47], 0x2f
xor eax, eax
cmp eax, 2
jae 0x40ff53
movzx edx, byte [esp + eax + 0x46]
mov ecx, 0x21
sub ecx, eax
mov esi, eax
add esi, 0x50a405de
or esi, edx
mov ebx, eax
sub ebx, esi
mov esi, 0x22
sub esi, ebx
or ecx, esi
or ecx, edx
add ebx, ecx
mov cl, 0x31
sub cl, bl
mov ebx, dword [esp + 0x24]
mov byte [esp + eax + 0x46], cl
add eax, 1
jmp 0x40ff16
jmp 0x40ff55
lea eax, [esp + 0x46]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e40
cmp eax, 0
je 0x4100d4
mov al, byte [esp + 0x148]
mov byte [esp + 0x1f0], al
mov byte [esp + 0x44], 0xd2
mov byte [esp + 0x45], 0x77
xor eax, eax
cmp eax, 2
jae 0x40fff5
movzx esi, byte [esp + eax + 0x44]
mov ecx, eax
add ecx, 0xc3bf2446
mov edi, esi
add edi, 1
mov ebx, esi
xor ebx, 0xffffffff
mov edx, ecx
or edx, ebx
add edx, edi
mov ebx, edx
and ebx, 0xfffffffd
mov edi, edx
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, edx
and ebx, 2
or edx, 2
imul edx, ebx
mov ebx, dword [esp + 0x24]
add edx, edi
add ecx, esi
mov esi, ecx
xor esi, 0xffffffff
mov edi, edx
and edi, esi
xor edx, 0xffffffff
and ecx, edx
sub ecx, edi
mov edi, dword [esp + 0x20]
add cl, 0xd0
mov byte [esp + eax + 0x44], cl
add eax, 1
jmp 0x40ff90
lea eax, [esp + 0x44]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e40
cmp eax, 0
je 0x4100d4
mov al, byte [esp + 0x144]
mov byte [esp + 0x1f4], al
mov byte [esp + 0x7e], 0xf5
mov byte [esp + 0x7f], 0x87
mov byte [esp + 0x80], 0x15
xor eax, eax
cmp eax, 3
jae 0x4100a7
movzx edx, byte [esp + eax + 0x7e]
xor ecx, ecx
sub ecx, eax
mov esi, ecx
shl esi, 1
and esi, 0xbc877d6a
xor ecx, 0xa1bc414a
add ecx, 1
sub ecx, esi
mov esi, ecx
xor esi, edx
xor ecx, edx
shl ecx, 1
sub ecx, esi
mov edx, ecx
and edx, 0xa5
mov edi, ecx
and edi, 0xa5
mov esi, ecx
and esi, 2
xor esi, 2
imul esi, edi
mov edi, ecx
and edi, 2
or edx, 2
imul edx, edi
add edx, esi
mov esi, ecx
shl esi, 1
and esi, 0x4e
add esi, 0x59
sub ecx, esi
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x7e], cl
add eax, 1
jmp 0x410038
lea eax, [esp + 0x7e]
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [esp + 8], 3
call fcn.00401e40
sub eax, 1
mov al, 1
sbb al, 0xff
test al, 1
mov edi, dword [esp + 0x20]
jne 0x411b92
jmp 0x4100d9
jmp 0x411b92
mov al, byte [esp + 0x140]
mov byte [esp + 0x1f8], al
mov byte [esp + 0x42], 0xcc
mov byte [esp + 0x43], 0xac
xor eax, eax
cmp eax, 2
jae 0x410118
mov dl, byte [esp + eax + 0x42]
mov esi, eax
shl esi, 1
and esi, 0x66
mov ecx, eax
xor ecx, 0x33
add ecx, esi
xor cl, dl
add cl, 0x68
mov byte [esp + eax + 0x42], cl
add eax, 1
jmp 0x4100f3
lea eax, [esp + 0x42]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x29c], eax
mov al, byte [esp + 0x13c]
mov byte [esp + 0x1fc], al
mov byte [esp + 0x40], 0xbc
mov byte [esp + 0x41], 0xd
xor eax, eax
cmp eax, 2
jae 0x410165
mov cl, byte [esp + eax + 0x40]
mov dl, al
add dl, 0x6c
xor dl, cl
add dl, 0xa0
mov byte [esp + eax + 0x40], dl
add eax, 1
jmp 0x410149
lea eax, [esp + 0x40]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov cl, byte [esp + 0x138]
mov byte [esp + 0x200], cl
mov byte [esp + 0x3e], 0xe0
mov byte [esp + 0x3f], 0x5e
xor edi, edi
cmp edi, 2
jae 0x4101c6
movzx edx, byte [esp + edi + 0x3e]
mov esi, edi
add esi, 0xd7570df5
mov ecx, esi
and ecx, edx
shl ecx, 1
add esi, edx
sub ecx, esi
mov edx, ecx
shl edx, 1
and edx, 0x52
xor ecx, 0x56
add ecx, 1
sub ecx, edx
add cl, 1
mov byte [esp + edi + 0x3e], cl
add edi, 1
jmp 0x41018f
mov dword [esp + 0x308], eax
lea eax, [esp + 0x3e]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401a90
mov dword [esp + 0x314], eax
mov al, byte [esp + 0x134]
mov byte [esp + 0x204], al
mov byte [esp + 0x3c], 0xcd
mov byte [esp + 0x3d], 0x38
xor eax, eax
cmp eax, 2
jae 0x41024c
movzx ecx, byte [esp + eax + 0x3c]
mov edi, eax
add edi, 0xadb36fbf
mov esi, ecx
shl esi, 1
xor esi, 0xffffffff
add esi, ecx
mov edx, edi
and edx, esi
mov esi, 0x40
sub esi, eax
and esi, 0xa4
and edi, 0x5b
or esi, edi
xor esi, 0x5b
mov edi, ecx
add edi, 1
xor ecx, 0xffffffff
or esi, ecx
add esi, edi
or edx, esi
add dl, 8
mov byte [esp + eax + 0x3c], dl
add eax, 1
jmp 0x4101fe
lea eax, [esp + 0x3c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x2ac], eax
mov al, byte [esp + 0x130]
mov byte [esp + 0x208], al
mov byte [esp + 0x3a], 0x37
mov byte [esp + 0x3b], 0xd4
xor eax, eax
cmp eax, 2
jae 0x4102d1
movzx edx, byte [esp + eax + 0x3a]
mov ecx, eax
add ecx, 0xfdf3478b
mov edi, eax
add edi, 0x8b
mov esi, ecx
or esi, edi
and esi, edx
mov edi, esi
and edi, 2
xor edi, 2
mov ebx, esi
and ebx, 0xfd
imul ebx, edi
mov edi, esi
and edi, 2
or esi, 2
imul esi, edi
add esi, ebx
mov ebx, dword [esp + 0x24]
add ecx, edx
sub ecx, esi
add cl, 0xa8
mov byte [esp + eax + 0x3a], cl
add eax, 1
jmp 0x41027d
lea eax, [esp + 0x3a]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00401980
fnstcw word [esp + 0xb0]
movzx eax, word [esp + 0xb0]
or eax, 0xc00
mov word [esp + 0x26c], ax
fldcw word [esp + 0x26c]
fistp dword [esp + 0x328]
fldcw word [esp + 0xb0]
mov eax, dword [esp + 0x328]
mov dword [esp + 0x310], eax
mov al, byte [esp + 0x12c]
mov byte [esp + 0x20c], al
mov byte [esp + 0x7b], 0x22
mov byte [esp + 0x7c], 0x36
mov byte [esp + 0x7d], 0x86
xor eax, eax
cmp eax, 3
jae 0x41037e
movzx edx, byte [esp + eax + 0x7b]
mov esi, eax
and esi, 0xc7355c
xor esi, 0xc7355c
mov ecx, eax
and ecx, 0xff38caa3
sub ecx, esi
xor ecx, edx
add ecx, 0x639aadf
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x7b], cl
add eax, 1
jmp 0x41033f
lea eax, [esp + 0x7b]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00401980
fnstcw word [esp + 0xae]
movzx eax, word [esp + 0xae]
or eax, 0xc00
mov word [esp + 0x26a], ax
fldcw word [esp + 0x26a]
fistp dword [esp + 0x324]
fldcw word [esp + 0xae]
mov ebx, dword [esp + 0x324]
mov eax, dword [esp + 0x29c]
mov dword [esp], eax
call fcn.00413bf0
mov esi, eax
add esi, 1
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4103f2
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], esi
mov eax, dword [esp + 0x29c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a950
mov dword [esp + 0x2b8], 0
mov dword [esp + 0x2bc], 0
mov dword [esp + 0x2c0], 0
mov dword [esp + 0x2c4], 0
lea ecx, [esp + 0x2b8]
mov dword [esp], edi
call fcn.00437610
sub esp, 4
mov dword [esp], edi
call fcn.00408010
lea ecx, [esp + 0x2b8]
mov dword [esp], 0x1000
call fcn.004378c0
sub esp, 4
cmp eax, 0
setge al
test al, 1
jne 0x41048e
jmp 0x410485
mov edi, dword [esp + 0x20]
jmp 0x410abf
mov dword [esp + 0x128], 0
mov eax, dword [esp + 0x2b8]
mov dword [esp + 0x2cc], eax
mov al, byte [esp + 0x210]
mov byte [esp + 0x268], al
mov byte [esp + 0xa6], 0x2e
mov byte [esp + 0xa7], 0x2d
mov byte [esp + 0xa8], 0x2c
mov byte [esp + 0xa9], 0x2b
xor eax, eax
cmp eax, 4
jae 0x410505
movzx edx, byte [esp + eax + 0xa6]
mov esi, eax
add esi, 0x69
and esi, edx
shl esi, 1
mov ecx, eax
add ecx, 0x69
add ecx, edx
sub ecx, esi
add cl, 0xb8
mov byte [esp + eax + 0xa6], cl
add eax, 1
jmp 0x4104d7
mov dword [esp + 0x30c], ebx
mov esi, dword [esp + 0xa6]
xor edi, edi
mov ecx, 2
cmp edi, dword [0x447604]
jb 0x410527
jmp 0x4105b0
mov edx, dword [0x447608]
cmp dword [edx + edi*8], 0x4947caf6
sete bl
xor ecx, ecx
mov byte [esp + 0x64], bl
test bl, 1
jne 0x410544
jmp 0x41059f
mov edx, dword [edx + edi*8 + 4]
mov ecx, 2
cmp edx, esi
je 0x41059f
mov eax, dword [0x44760c]
xor ecx, ecx
lea ecx, [esp + 0x128]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esp + 0x2cc]
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.00439030
mov ecx, 1
test byte [esp + 0x64], 1
je 0x4105a8
jmp 0x4105b0
add edi, 1
jmp 0x410515
cmp ecx, 2
je 0x4105b7
mov esi, eax
mov al, byte [esp + 0x124]
mov byte [esp + 0x214], al
mov byte [esp + 0x9a], 0x6b
mov byte [esp + 0x9b], 0x60
mov byte [esp + 0x9c], 0x61
mov byte [esp + 0x9d], 0xa2
xor eax, eax
cmp eax, 4
jae 0x410650
movzx edi, byte [esp + eax + 0x9a]
mov edx, eax
add edx, 7
mov ebx, edi
add ebx, 1
mov ecx, edi
xor ecx, 0xffffffff
or ecx, 6
add ecx, ebx
mov ebx, 0x28
sub ebx, eax
mov dword [esp + 0x2e8], esi
mov esi, 0x28
sub esi, eax
and ebx, esi
mov esi, dword [esp + 0x2e8]
and ebx, 0xf9
and edx, 6
and edi, 0xf9
xor edi, 0xf9
or ecx, edi
or ebx, edx
xor ecx, ebx
add cl, 0x48
mov byte [esp + eax + 0x9a], cl
add eax, 1
jmp 0x4105e7
mov eax, dword [esp + 0x9a]
cmp esi, eax
mov edi, dword [esp + 0x20]
jne 0x410abf
mov eax, dword [esp + 0x128]
add eax, 2
mov dword [esp], eax
call fcn.004375a0
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0x128]
add eax, 2
mov dword [esp + 0x2dc], eax
mov eax, dword [esp + 0x2b8]
mov dword [esp + 0x2d4], eax
mov al, byte [esp + 0x218]
mov byte [esp + 0x264], al
mov byte [esp + 0xaa], 0x2e
mov byte [esp + 0xab], 0x2d
mov byte [esp + 0xac], 0x2c
mov byte [esp + 0xad], 0x2b
xor eax, eax
cmp eax, 4
jae 0x4106f9
movzx edx, byte [esp + eax + 0xaa]
mov esi, eax
add esi, 0x69
and esi, edx
shl esi, 1
mov ecx, eax
add ecx, 0x69
add ecx, edx
sub ecx, esi
add cl, 0xb8
mov byte [esp + eax + 0xaa], cl
add eax, 1
jmp 0x4106cb
mov esi, dword [esp + 0xaa]
xor edi, edi
mov ecx, 2
cmp edi, dword [0x447604]
jb 0x410718
mov edi, dword [esp + 0x20]
jmp 0x4107a4
mov ecx, dword [0x447608]
cmp dword [ecx + edi*8], 0x4947caf6
sete bl
test bl, 1
jne 0x41072f
jmp 0x41078f
mov edx, dword [ecx + edi*8 + 4]
mov ecx, 2
cmp edx, esi
je 0x410791
mov eax, dword [0x44760c]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 0x14
mov eax, dword [esp + 0x2d4]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x2b
mov eax, dword [esp + 0xcc]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x2dc]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
call fcn.00439030
mov ecx, 1
jmp 0x410791
xor ecx, ecx
test bl, 1
je 0x41079c
mov edi, dword [esp + 0x20]
jmp 0x4107a4
add edi, 1
jmp 0x410702
cmp ecx, 2
je 0x4107ab
mov esi, eax
cmp esi, 0
jl 0x410ab0
mov edi, dword [esp + 0x308]
mov dword [esp], edi
call fcn.00413bf0
mov ebx, eax
mov esi, ebx
add esi, 1
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4107e2
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
xor ecx, ecx
mov dword [esp + 0x2d8], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a950
mov ecx, dword [esp + 0xcc]
mov esi, ecx
add esi, 4
mov eax, dword [ecx + 4]
movzx ecx, word [ecx]
shr ecx, 1
add ecx, 0xffffffff
shl ecx, 1
add eax, ecx
mov edi, eax
cmp edi, dword [esi]
jb 0x41083b
movzx ecx, word [edi]
cmp ecx, 0x5c
jne 0x410836
jmp 0x41083f
add edi, 0xfffffffe
jmp 0x410828
mov edi, eax
jmp 0x41083f
mov eax, dword [esi]
xor ecx, ecx
sub ecx, eax
add edi, ecx
sar edi, 1
mov eax, edi
sub eax, 0x48d2220d
add eax, ebx
add eax, 0x48d2220d
add eax, 1
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410870
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov ebx, eax
mov eax, dword [esi]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], edi
call fcn.00413c50
mov dword [esp], eax
mov edi, dword [esp + 0x2d8]
mov dword [esp + 4], edi
call fcn.00409c40
mov esi, eax
mov dword [esp], edi
call fcn.00408010
mov eax, esi
xor eax, ebx
mov ecx, ebx
xor ecx, 0xffffffff
and esi, ecx
shl esi, 1
sub esi, eax
sar esi, 1
add esi, 1
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4108d5
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov dword [esp], ebx
mov dword [esp + 0x290], eax
mov dword [esp + 4], eax
call fcn.00435b30
mov dword [esp], ebx
call fcn.00408010
jmp 0x4108fa
mov eax, dword [esp + 0x2ac]
mov dword [esp], eax
call fcn.00413bf0
mov ebx, eax
mov eax, ebx
and eax, 1
or ebx, 1
add ebx, eax
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41092d
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
xor ecx, ecx
mov dword [esp + 0x288], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x2ac]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a950
lea ecx, [esp + 0x468]
mov dword [esp], 1
call fcn.00408ba0
sub esp, 4
xor edi, edi
mov esi, dword [esp + 0x314]
mov dword [esp], esi
call fcn.00401f40
cmp edi, eax
jb 0x41098d
jmp 0x410a6e
mov dword [esp], esi
mov dword [esp + 4], edi
call fcn.00401f20
mov dword [esp], eax
call fcn.00401960
mov dword [esp + 0x274], eax
cmp eax, 0
jne 0x4109b2
jmp 0x410a66
mov eax, dword [esp + 0x274]
mov dword [esp], eax
call fcn.00413bf0
xor ecx, ecx
sub ecx, eax
add ecx, 0xffffffff
xor esi, esi
sub esi, ecx
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4109e4
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov ebx, eax
xor eax, eax
mov dword [esp], ebx
mov dword [esp + 4], esi
mov eax, dword [esp + 0x274]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a950
lea eax, [esp + 0x468]
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x288]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x290]
mov dword [esp + 8], eax
mov esi, ebx
mov dword [esp + 0xc], ebx
mov eax, dword [esp + 0x30c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x310]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.0041ff60
jmp 0x410a5c
mov dword [esp], esi
call fcn.00408010
jmp 0x410a66
add edi, 1
jmp 0x410975
mov eax, dword [esp + 0x288]
mov dword [esp], eax
call fcn.00408010
jmp 0x410a7f
jmp 0x410a81
jmp 0x410a83
mov eax, dword [esp + 0x290]
mov dword [esp], eax
call fcn.00408010
jmp 0x410a94
lea ecx, [esp + 0x468]
call fcn.00409790
lea ecx, [esp + 0x468]
call fcn.00408c80
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0xcc]
mov dword [esp], eax
call fcn.004375e0
lea ecx, [esp + 0x2b8]
call fcn.004379f0
jmp 0x411b92
mov al, byte [esp + 0x120]
mov byte [esp + 0x21c], al
mov byte [esp + 0x38], 0xa1
mov byte [esp + 0x39], 0x2c
xor eax, eax
mov dword [esp + 0x20], edi
cmp eax, 2
jae 0x410b50
movzx esi, byte [esp + eax + 0x38]
mov edx, 0x15d0134c
sub edx, eax
or edx, esi
mov ecx, 0x4c
sub ecx, eax
mov edi, 0x4c
sub edi, eax
or ecx, edi
mov edi, 0x4c
sub edi, eax
and ecx, edi
mov edi, dword [esp + 0x20]
and ecx, esi
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
add edx, 0xae809a67
mov esi, edx
shl esi, 1
and esi, 2
and edx, 0xfe
and ecx, 1
or ecx, edx
add ecx, esi
mov byte [esp + eax + 0x38], cl
mov ecx, eax
shl ecx, 1
or eax, ecx
xor eax, 1
jmp 0x410aee
lea eax, [esp + 0x38]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov ebx, eax
mov al, byte [esp + 0x11c]
mov byte [esp + 0x220], al
mov byte [esp + 0x36], 0xdd
mov byte [esp + 0x37], 0x6e
xor eax, eax
cmp eax, 2
jae 0x410b98
mov cl, byte [esp + eax + 0x36]
mov dl, al
add dl, 0x45
xor dl, cl
add dl, 0xd8
mov byte [esp + eax + 0x36], dl
add eax, 1
jmp 0x410b7c
lea eax, [esp + 0x36]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401880
test ebx, ebx
sete dl
mov dword [esp + 0x2f0], eax
test eax, eax
sete cl
or dl, cl
test dl, 1
jne 0x410bc6
jmp 0x410bcb
jmp 0x4114f7
mov dword [esp], ebx
call fcn.00413bf0
xor ecx, ecx
sub ecx, eax
add ecx, 0xffffffff
xor esi, esi
sub esi, ecx
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410bf6
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
xor ecx, ecx
mov dword [esp + 0x2b4], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040a950
mov al, byte [esp + 0x118]
mov byte [esp + 0x224], al
mov byte [esp + 0x34], 0x70
mov byte [esp + 0x35], 0xd7
xor eax, eax
mov ebx, dword [esp + 0x24]
cmp eax, 2
jae 0x410c70
movzx edx, byte [esp + eax + 0x34]
mov ecx, eax
add ecx, 0x4c9792e6
xor ecx, edx
mov esi, ecx
add esi, 1
mov edx, ecx
xor edx, 0xffffffff
or edx, 0x4f
add edx, esi
shl edx, 1
xor ecx, 0x30
sub edx, ecx
mov byte [esp + eax + 0x34], dl
add eax, 1
jmp 0x410c3d
lea eax, [esp + 0x34]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov edi, eax
xor esi, esi
cmp edi, 0
je 0x410cde
mov dword [esp], edi
call fcn.00413bf0
mov ebx, eax
sub ebx, 0xf271deeb
add ebx, 1
add ebx, 0xf271deeb
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410cba
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov esi, eax
xor eax, eax
mov dword [esp], esi
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a950
mov dword [esp + 0x2b0], esi
mov edi, dword [esp + 0x2f0]
mov dword [esp], edi
call fcn.00413bf0
mov esi, eax
mov dword [esp + 0x284], esi
add esi, 1
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410d18
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov ebx, eax
xor eax, eax
mov dword [esp], ebx
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a950
xor eax, eax
lea eax, [esp + 0x114]
mov dword [esp], 0
mov dword [esp + 0xb8], ebx
mov dword [esp + 4], ebx
mov ecx, dword [esp + 0x284]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x447600]
sub esp, 0x18
mov cl, byte [esp + 0x110]
mov byte [esp + 0x228], cl
mov byte [esp + 0x96], 0x3d
mov byte [esp + 0x97], 0xdf
mov byte [esp + 0x98], 0xc0
mov byte [esp + 0x99], 0x81
xor ecx, ecx
cmp ecx, 4
jae 0x410de8
movzx ebx, byte [esp + ecx + 0x96]
mov edi, ecx
add edi, 0x2a45f3ae
mov esi, 0x51
sub esi, ecx
and esi, ebx
mov edx, edi
xor edx, ebx
add edx, ebx
and edi, ebx
add esi, edi
sub edx, esi
add dl, 0x90
mov byte [esp + ecx + 0x96], dl
add ecx, 1
jmp 0x410daf
cmp eax, dword [esp + 0x96]
setne al
mov edi, dword [esp + 0x20]
test al, 1
jne 0x410dfc
jmp 0x410e12
jmp 0x410dfe
mov eax, dword [esp + 0xb8]
mov dword [esp], eax
call fcn.00408010
jmp 0x4114f7
mov eax, dword [esp + 0x114]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410e2f
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov ebx, dword [0x447600]
mov ecx, dword [esp + 0x114]
xor edx, edx
mov dword [esp], 0
mov edx, dword [esp + 0xb8]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x284]
mov dword [esp + 8], edx
mov dword [esp + 0xd0], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [esp + 0x114]
mov dword [esp + 0x14], eax
call ebx
sub esp, 0x18
cmp eax, 0
jge 0x410eb2
jmp 0x410e89
mov eax, dword [esp + 0xb8]
mov dword [esp], eax
call fcn.00408010
jmp 0x410e9a
jmp 0x410e9c
mov eax, dword [esp + 0xd0]
mov dword [esp], eax
call fcn.00408010
jmp 0x410ead
jmp 0x4114f5
jmp 0x410eb4
mov eax, dword [esp + 0xb8]
mov dword [esp], eax
call fcn.00408010
mov ebx, dword [esp + 0x24]
mov al, byte [esp + 0x10c]
mov byte [esp + 0x22c], al
mov byte [esp + 0x32], 0x94
mov byte [esp + 0x33], 0x7b
xor eax, eax
cmp eax, 2
jae 0x410f41
movzx edx, byte [esp + eax + 0x32]
mov esi, eax
add esi, 0x1e7ba62a
mov ecx, eax
add ecx, 0x1e7ba62a
or ecx, 0xd2bdd2d1
sub ecx, eax
add ecx, 0x218459d6
and esi, 0x2d422d2e
or ecx, esi
xor ecx, edx
mov esi, ecx
xor esi, 0xd2bdd2d1
add esi, 0xc22ceaf
mov edx, esi
shl edx, 1
and edx, 2
and esi, 0xfe
and ecx, 1
or ecx, esi
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x32], cl
add eax, 1
jmp 0x410ee1
lea eax, [esp + 0x32]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov edi, eax
mov dword [esp + 0xc0], 0
cmp edi, 0
je 0x410fbe
mov dword [esp], edi
call fcn.00413bf0
mov ebx, eax
mov eax, ebx
and eax, 1
shl eax, 1
xor ebx, 1
add ebx, eax
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410f91
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
xor ecx, ecx
mov dword [esp + 0xc0], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a950
mov ebx, dword [esp + 0x24]
mov al, byte [esp + 0x108]
mov byte [esp + 0x230], al
mov byte [esp + 0x30], 0x98
mov byte [esp + 0x31], 0xf1
xor eax, eax
cmp eax, 2
jae 0x41102b
movzx edx, byte [esp + eax + 0x30]
mov ecx, eax
add ecx, 0x80740a70
mov esi, ecx
and esi, edx
mov edi, esi
and edi, 2
xor edi, 2
mov ebx, esi
and ebx, 0xfd
imul ebx, edi
mov edi, esi
and edi, 2
or esi, 2
imul esi, edi
add esi, ebx
mov ebx, dword [esp + 0x24]
add ecx, edx
sub ecx, esi
mov edx, ecx
shl edx, 1
xor ecx, 0x7f
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x30], cl
add eax, 1
jmp 0x410fd8
lea eax, [esp + 0x30]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401b90
cmp eax, 0
setne al
and al, 1
mov byte [esp + 0x68], al
mov al, byte [esp + 0x104]
mov byte [esp + 0x234], al
mov byte [esp + 0x78], 0xc5
mov byte [esp + 0x79], 0xd9
mov byte [esp + 0x7a], 0xa2
xor eax, eax
mov edi, dword [ebp + 8]
cmp eax, 3
jae 0x4110a1
movzx edx, byte [esp + eax + 0x78]
mov ecx, eax
add ecx, 0xffd066a0
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
mov byte [esp + eax + 0x78], cl
add eax, 0x29764b85
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
add eax, 0xd689b47b
jmp 0x411069
lea eax, [esp + 0x78]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401a90
xor esi, esi
cmp eax, 0
mov edi, 0
je 0x4113b8
mov dword [esp + 0x2f8], eax
mov dword [esp], eax
call fcn.00401f40
mov esi, eax
mov ecx, 0xc
mov eax, esi
mul ecx
seto cl
add eax, 4
setb dl
mov dh, cl
and dh, dl
xor cl, dl
or dh, cl
mov ecx, 0xffffffff
test dh, 1
jne 0x4110f8
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov edi, eax
mov dword [edi], esi
add edi, 4
mov dword [esp + 0xc4], esi
cmp esi, 0
je 0x411131
imul eax, dword [esp + 0xc4], 0xc
mov ebx, edi
add ebx, eax
mov esi, edi
mov ecx, esi
call fcn.00413d10
add esi, 0xc
cmp esi, ebx
jne 0x411121
jmp 0x411131
xor esi, esi
jmp 0x411135
cmp esi, dword [esp + 0xc4]
mov eax, dword [esp + 0x2f8]
jb 0x411151
mov esi, dword [esp + 0xc4]
jmp 0x4113b8
mov dword [esp], eax
mov dword [esp + 4], esi
call fcn.00401f50
mov dword [esp + 0xbc], eax
mov al, byte [esp + 0x100]
mov byte [esp + 0x238], al
mov byte [esp + 0x75], 0x23
mov byte [esp + 0x76], 0x29
mov byte [esp + 0x77], 0x88
xor eax, eax
cmp eax, 3
jae 0x4111b6
movzx edx, byte [esp + eax + 0x75]
mov ecx, eax
add ecx, 0x3436e836
mov ebx, ecx
and ebx, edx
shl ebx, 1
add ecx, edx
mov edx, ecx
xor edx, ebx
xor ebx, 0xffffffff
and ecx, ebx
shl ecx, 1
sub ecx, edx
add cl, 0x50
mov byte [esp + eax + 0x75], cl
add eax, 1
jmp 0x411183
lea eax, [esp + 0x75]
mov ecx, dword [esp + 0xbc]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x2ec], eax
mov al, byte [esp + 0xfc]
mov byte [esp + 0x23c], al
mov byte [esp + 0x72], 0x42
mov byte [esp + 0x73], 0x52
mov byte [esp + 0x74], 0xd9
xor eax, eax
cmp eax, 3
jae 0x411224
movzx edx, byte [esp + eax + 0x72]
mov ecx, eax
add ecx, 0x1f
mov ebx, edx
shl ebx, 1
xor ebx, 0xffffffff
add ebx, edx
and ecx, ebx
mov ebx, 0xe0
sub ebx, eax
and ebx, edx
or ebx, ecx
add bl, 8
mov byte [esp + eax + 0x72], bl
add eax, 1
jmp 0x4111f3
lea eax, [esp + 0x72]
mov ecx, dword [esp + 0xbc]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x2e0], eax
mov al, byte [esp + 0xf8]
mov byte [esp + 0x240], al
mov byte [esp + 0x92], 0x8a
mov byte [esp + 0x93], 0x83
mov byte [esp + 0x94], 0x8a
mov byte [esp + 0x95], 0x29
xor eax, eax
cmp eax, 4
jae 0x4112b3
movzx edx, byte [esp + eax + 0x92]
mov ebx, eax
shl ebx, 1
and ebx, 0x10560b2c
mov ecx, eax
xor ecx, 0x882b0596
add ecx, ebx
xor ecx, edx
add ecx, 0xbea7d34f
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x92], cl
add eax, 1
jmp 0x411272
lea eax, [esp + 0x92]
mov ecx, dword [esp + 0xbc]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401b90
xor ebx, ebx
cmp eax, 0
setg byte [esp + 0x65]
mov al, byte [esp + 0xf4]
mov byte [esp + 0x244], al
mov byte [esp + 0x8e], 0x4b
mov byte [esp + 0x8f], 0x5c
mov byte [esp + 0x90], 0x49
mov byte [esp + 0x91], 0xbb
xor eax, eax
cmp eax, 4
jae 0x411356
movzx edx, byte [esp + eax + 0x8e]
mov ecx, eax
add ecx, 0x3b310278
xor ecx, edx
add ecx, 0xbcbd4813
mov edx, ecx
shl edx, 1
and edx, 0x7e
xor ecx, 0x3f
add ecx, edx
add cl, 0xee
mov byte [esp + eax + 0x8e], cl
mov ecx, eax
and ecx, 1
mov edx, eax
and edx, 2
xor edx, 0xfffffffe
and eax, 2
xor eax, 2
or eax, edx
xor eax, 0xffffffff
add eax, ecx
jmp 0x411307
lea eax, [esp + 0x8e]
mov ecx, dword [esp + 0xbc]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401b90
xor edx, edx
cmp eax, 0
setg dl
imul eax, esi, 0xc
mov ecx, edi
add ecx, eax
mov eax, dword [esp + 0x2ec]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2e0]
mov dword [esp], eax
and edx, 1
mov dword [esp + 0xc], edx
mov al, byte [esp + 0x65]
mov bl, al
and ebx, 1
mov dword [esp + 8], ebx
call fcn.00413d30
sub esp, 0x10
add esi, 1
jmp 0x411135
lea ecx, [esp + 0x344]
call fcn.00413e90
mov eax, dword [esp + 0x2b4]
mov dword [esp + 0x344], eax
mov eax, dword [esp + 0x2b0]
mov dword [esp + 0x348], eax
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x34c], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x350], eax
mov al, byte [esp + 0x68]
mov byte [esp + 0x354], al
lea ecx, [esp + 0x3e0]
mov dword [esp], 2
call fcn.00408ba0
sub esp, 4
lea eax, [esp + 0x3e0]
lea ecx, [esp + 0x344]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edi
mov dword [esp + 0xc], esi
call fcn.00414740
lea ecx, [esp + 0x3e0]
call fcn.00409790
cmp edi, 0
sete al
test al, 1
jne 0x41148b
jmp 0x411457
mov ebx, edi
add ebx, 0xfffffffc
imul eax, dword [edi - 4], 0xc
mov esi, edi
add esi, eax
cmp edi, esi
je 0x411481
jmp 0x41146a
add esi, 0xfffffff4
mov ecx, esi
call fcn.00413ec0
cmp esi, edi
sete al
test al, 1
jne 0x41147f
jmp 0x41146a
jmp 0x411481
mov dword [esp], ebx
call fcn.00408010
jmp 0x41148b
mov edi, dword [esp + 0x20]
jmp 0x411491
mov eax, dword [esp + 0x2b4]
mov dword [esp], eax
call fcn.00408010
jmp 0x4114a2
jmp 0x4114a4
mov eax, dword [esp + 0xd0]
mov dword [esp], eax
call fcn.00408010
mov eax, dword [esp + 0x2b0]
cmp eax, 0
je 0x4114c7
mov dword [esp], eax
call fcn.00408010
cmp dword [esp + 0xc0], 0
sete al
test al, 1
jne 0x4114e9
jmp 0x4114d8
mov eax, dword [esp + 0xc0]
mov dword [esp], eax
call fcn.00408010
jmp 0x4114e9
lea ecx, [esp + 0x3e0]
call fcn.00408c80
jmp 0x4114f7
jmp 0x411b92
mov al, byte [esp + 0xf0]
mov byte [esp + 0x248], al
mov byte [esp + 0x2e], 0xd0
mov byte [esp + 0x2f], 0x4b
xor eax, eax
cmp eax, 2
jae 0x411532
mov cl, byte [esp + eax + 0x2e]
mov dl, al
add dl, 0x9a
xor dl, cl
add dl, 0x30
mov byte [esp + eax + 0x2e], dl
add eax, 1
jmp 0x411516
mov dword [esp + 0x20], edi
lea eax, [esp + 0x2e]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401880
mov edi, eax
mov al, byte [esp + 0xec]
mov byte [esp + 0x24c], al
mov byte [esp + 0x2c], 0xbb
mov byte [esp + 0x2d], 0x2c
xor eax, eax
cmp eax, 2
jae 0x41157e
mov cl, byte [esp + eax + 0x2c]
mov dl, al
add dl, 0xb3
xor dl, cl
add dl, 0x68
mov byte [esp + eax + 0x2c], dl
add eax, 1
jmp 0x411562
lea eax, [esp + 0x2c]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00401880
mov ebx, eax
test edi, edi
sete al
test ebx, ebx
sete cl
or al, cl
test al, 1
jne 0x4115a2
jmp 0x4115ab
mov edi, dword [esp + 0x20]
jmp 0x411b90
mov dword [esp], edi
call fcn.00413bf0
mov esi, eax
sub esi, 0xffffffff
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4115d0
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
xor ecx, ecx
mov dword [esp + 0x2a8], eax
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040a950
mov dword [esp], ebx
call fcn.00413bf0
mov esi, eax
mov dword [esp + 0x27c], esi
add esi, 1
mov ecx, 2
mov eax, esi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411625
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], esi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
call fcn.0040a950
xor eax, eax
lea eax, [esp + 0xe8]
mov dword [esp], 0
mov esi, edi
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x27c]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x447600]
sub esp, 0x18
mov cl, byte [esp + 0xe4]
mov byte [esp + 0x250], cl
mov byte [esp + 0x8a], 0x7f
mov byte [esp + 0x8b], 0x9d
mov byte [esp + 0x8c], 0x9e
mov byte [esp + 0x8d], 0xdf
xor ecx, ecx
cmp ecx, 4
jae 0x4116d9
mov dl, byte [esp + ecx + 0x8a]
mov dh, cl
add dh, 0x7c
xor dh, dl
add dh, 0x20
mov byte [esp + ecx + 0x8a], dh
add ecx, 1
jmp 0x4116b7
cmp eax, dword [esp + 0x8a]
setne al
test al, 1
jne 0x4116e9
jmp 0x4116fc
jmp 0x4116eb
mov dword [esp], esi
call fcn.00408010
mov edi, dword [esp + 0x20]
jmp 0x411b90
mov eax, dword [esp + 0xe8]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411719
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov ebx, dword [0x447600]
mov ecx, dword [esp + 0xe8]
xor edx, edx
lea edx, [esp + 0xe8]
mov dword [esp], 0
mov dword [esp + 4], esi
mov edi, dword [esp + 0x27c]
mov dword [esp + 8], edi
mov dword [esp + 0xc8], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call ebx
sub esp, 0x18
cmp eax, 0
jge 0x411792
mov edi, dword [esp + 0x20]
jmp 0x411770
mov dword [esp], esi
call fcn.00408010
mov eax, dword [esp + 0xc8]
jmp 0x411781
jmp 0x411783
jmp 0x411785
mov dword [esp], eax
call fcn.00408010
jmp 0x411b8e
jmp 0x411794
mov dword [esp], esi
call fcn.00408010
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x24]
mov al, byte [esp + 0xe0]
mov byte [esp + 0x254], al
mov byte [esp + 0x2a], 0x8f
mov byte [esp + 0x2b], 8
xor eax, eax
cmp eax, 2
jae 0x4117ea
movzx edx, byte [esp + eax + 0x2a]
mov esi, eax
add esi, 0x6f
mov ecx, edx
xor ecx, 0xffffffff
and esi, ecx
mov ecx, 0x90
sub ecx, eax
and ecx, edx
or ecx, esi
add cl, 0x88
mov byte [esp + eax + 0x2a], cl
add eax, 1
jmp 0x4117bd
lea eax, [esp + 0x2a]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401b90
cmp eax, 0
setne al
and al, 1
mov byte [esp + 0x67], al
mov al, byte [esp + 0xdc]
mov byte [esp + 0x258], al
mov byte [esp + 0x6f], 0x86
mov byte [esp + 0x70], 0x94
mov byte [esp + 0x71], 0x1d
xor eax, eax
cmp eax, 3
jae 0x4118a3
movzx edx, byte [esp + eax + 0x6f]
mov ecx, eax
add ecx, 0x2c5b0603
mov esi, ecx
and esi, edx
mov ebx, esi
and ebx, 0xfd
mov edi, esi
and edi, 2
xor edi, 2
imul edi, ebx
mov ebx, esi
and ebx, 2
or esi, 2
imul esi, ebx
add esi, edi
mov edi, esi
xor edi, 0xffffffff
and ecx, edi
mov edi, 0xd3a4f9fc
sub edi, eax
and esi, edi
add ecx, edx
sub ecx, esi
mov edx, ecx
shl edx, 1
and edx, 2
xor edx, 2
mov ebx, ecx
and ebx, 1
mov esi, 0x18
sub esi, ecx
and esi, 0xfe
or ebx, esi
xor ebx, 0xfe
add ebx, edx
mov byte [esp + eax + 0x6f], bl
mov edi, dword [ebp + 8]
mov ebx, edi
add eax, 1
jmp 0x411825
lea eax, [esp + 0x6f]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00401a90
xor edi, edi
cmp eax, 0
mov esi, 0
je 0x411a8b
mov dword [esp + 0x2f4], eax
mov dword [esp], eax
call fcn.00401f40
mov esi, eax
mov ecx, 8
mov eax, esi
mul ecx
seto dl
add eax, 4
setb cl
or dl, cl
mov ecx, 0xffffffff
test dl, 1
jne 0x4118f4
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov edi, eax
mov dword [edi], esi
add edi, 4
cmp esi, 0
sete al
test al, 1
mov dword [esp + 0x298], esi
jne 0x411936
jmp 0x411916
shl esi, 3
mov ebx, edi
add ebx, esi
mov esi, edi
mov ecx, esi
call fcn.00413ef0
add esi, 8
cmp esi, ebx
jne 0x41191f
mov esi, dword [esp + 0x298]
jmp 0x411936
xor ecx, ecx
jmp 0x41193a
cmp ecx, esi
setb al
test al, 1
jne 0x41194a
jmp 0x411945
jmp 0x411a8b
mov eax, dword [esp + 0x2f4]
mov dword [esp], eax
mov dword [esp + 0x2e4], ecx
mov dword [esp + 4], ecx
call fcn.00401f50
mov dword [esp + 0x278], eax
mov al, byte [esp + 0xd8]
mov byte [esp + 0x25c], al
mov byte [esp + 0x6c], 0x4f
mov byte [esp + 0x6d], 0x45
mov byte [esp + 0x6e], 0xac
xor eax, eax
cmp eax, 3
jae 0x4119b3
movzx edx, byte [esp + eax + 0x6c]
mov ecx, eax
add ecx, 0x7a
or ecx, edx
mov esi, eax
add esi, 0x7a
and esi, edx
add ecx, 0x33
sub ecx, esi
add cl, 0xfd
mov byte [esp + eax + 0x6c], cl
add eax, 1
jmp 0x41198a
lea eax, [esp + 0x6c]
mov ecx, dword [esp + 0x278]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x2d0], eax
mov al, byte [esp + 0xd4]
mov byte [esp + 0x260], al
mov byte [esp + 0x69], 0x9b
mov byte [esp + 0x6a], 0xa5
mov byte [esp + 0x6b], 0x20
xor eax, eax
cmp eax, 3
jae 0x411a3d
movzx edx, byte [esp + eax + 0x69]
mov ecx, eax
add ecx, 0x1a26594e
mov esi, 0xe5d9a6b1
sub esi, eax
and esi, 0xd8369bda
mov ebx, ecx
and ebx, 0x27c96425
or esi, ebx
mov ebx, esi
shl ebx, 1
xor esi, 0xda
xor ebx, 0xb4
sub ebx, esi
and ebx, edx
or ecx, edx
xor ebx, ecx
add bl, 0x90
mov byte [esp + eax + 0x69], bl
add eax, 1
jmp 0x4119f0
lea eax, [esp + 0x69]
mov ecx, dword [esp + 0x278]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov esi, dword [esp + 0x2e4]
mov edx, esi
shl edx, 3
mov ecx, edi
add ecx, edx
mov dword [esp], eax
mov eax, dword [esp + 0x2d0]
mov dword [esp + 4], eax
call fcn.00413f00
sub esp, 8
mov ecx, esi
sub ecx, 0xffffffff
mov esi, dword [esp + 0x298]
jmp 0x41193a
lea ecx, [esp + 0x330]
call fcn.00413e90
mov eax, dword [esp + 0x2a8]
mov dword [esp + 0x330], eax
mov dword [esp + 0x334], 0
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x338], eax
mov dword [esp + 0x33c], 0
mov al, byte [esp + 0x67]
mov byte [esp + 0x340], al
lea ecx, [esp + 0x358]
mov dword [esp], 3
call fcn.00408ba0
sub esp, 4
lea eax, [esp + 0x358]
lea ecx, [esp + 0x330]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edi
mov dword [esp + 0xc], esi
call fcn.0041e510
lea ecx, [esp + 0x358]
call fcn.00409790
cmp edi, 0
sete al
test al, 1
jne 0x411b58
jmp 0x411b24
mov ebx, edi
add ebx, 0xfffffffc
mov eax, dword [edi - 4]
shl eax, 3
mov esi, edi
add esi, eax
cmp edi, esi
sete al
test al, 1
jne 0x411b50
jmp 0x411b3e
jmp 0x411b40
add esi, 0xfffffff8
mov ecx, esi
call fcn.00413fb0
cmp esi, edi
jne 0x411b40
jmp 0x411b50
mov dword [esp], ebx
call fcn.00408010
jmp 0x411b5a
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0xc8]
mov dword [esp], eax
call fcn.00408010
jmp 0x411b6f
jmp 0x411b71
mov eax, dword [esp + 0x2a8]
mov dword [esp], eax
call fcn.00408010
lea ecx, [esp + 0x358]
call fcn.00408c80
jmp 0x411b8e
jmp 0x411b90
jmp 0x411b92
jmp 0x411b94
sub edi, 0x4049a356
add edi, 1
add edi, 0x4049a356
mov esi, dword [esp + 0x318]
jmp 0x40f25c
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret