Function at 0x411bc0
Capabilities:
Contain obfuscated stackstrings
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x818
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.00401b70
mov ebx, eax
cmp ebx, 0
jne 0x411be8
xor eax, eax
jmp 0x413be1
xor edi, edi
jmp 0x411bec
mov dword [esp], ebx
call fcn.00401f40
cmp edi, eax
jb 0x411bff
mov al, 1
jmp 0x413be1
mov dword [esp], ebx
mov dword [esp + 4], edi
call fcn.00401f50
mov dword [esp + 0x38], eax
mov al, byte [esp + 0x1b8]
mov byte [esp + 0x1d0], al
mov byte [esp + 0x47], 0x82
mov byte [esp + 0x48], 8
xor eax, eax
cmp eax, 2
jae 0x411c85
movzx edx, byte [esp + eax + 0x47]
mov ecx, 0x6afe90
sub ecx, eax
mov esi, 0x6afe90
sub esi, eax
and esi, ecx
or esi, edx
xor esi, 0xffffffff
mov ecx, 0x90
sub ecx, eax
and ecx, edx
or ecx, esi
mov edx, ecx
and edx, 0x357f487
mov esi, ecx
and esi, 0x357f487
xor esi, 0xffffffff
add ecx, 0x357f488
add ecx, esi
add ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x47], cl
add eax, 1
jmp 0x411c29
lea eax, [esp + 0x47]
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e40
cmp eax, 0
je 0x411da5
mov al, byte [esp + 0x1b4]
mov byte [esp + 0x1d4], al
mov byte [esp + 0x5b], 0xf5
mov byte [esp + 0x5c], 0x80
mov byte [esp + 0x5d], 0x15
xor eax, eax
mov dword [esp + 0x28], edi
cmp eax, 3
jae 0x411d0a
mov dl, byte [esp + eax + 0x5b]
mov esi, eax
add esi, 0xb
mov ecx, 0xa56e14b4
sub ecx, eax
mov edi, ecx
xor edi, 0x14
or ecx, 0xeb
and ecx, edi
mov edi, dword [esp + 0x28]
and esi, 0x14
add ecx, esi
xor cl, dl
xor cl, 0x14
mov dl, 0xa7
sub dl, cl
mov byte [esp + eax + 0x5b], dl
add eax, 1
jmp 0x411ccd
lea eax, [esp + 0x5b]
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e40
cmp eax, 0
je 0x411da5
mov al, byte [esp + 0x1b0]
mov byte [esp + 0x1d8], al
mov byte [esp + 0x45], 0xa9
mov byte [esp + 0x46], 0xd
xor eax, eax
cmp eax, 2
jae 0x411d79
movzx esi, byte [esp + eax + 0x45]
mov ecx, eax
add ecx, 0x400c3b6c
mov edx, ecx
and edx, esi
shl edx, 1
mov edi, ecx
and edi, esi
shl edi, 1
xor ecx, esi
add ecx, edi
mov edi, dword [esp + 0x28]
sub ecx, edx
add cl, 0xa0
mov byte [esp + eax + 0x45], cl
add eax, 1
jmp 0x411d45
jmp 0x411d7b
lea eax, [esp + 0x45]
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e40
cmp eax, 0
setne al
xor al, 0xff
test al, 1
jne 0x411da5
jmp 0x411daa
jmp 0x413bd2
mov al, byte [esp + 0x1ac]
mov byte [esp + 0x1dc], al
mov byte [esp + 0x43], pe_nt_image_headers32
mov byte [esp + 0x44], 0xce
xor eax, eax
mov dword [esp + 0x158], ebx
cmp eax, 2
jae 0x411e27
movzx ebx, byte [esp + eax + 0x43]
mov esi, eax
add esi, 0x1acda5e5
mov edi, 0x1a
sub edi, eax
mov ecx, 0x1a
sub ecx, eax
and edi, ecx
mov ecx, 0x1a
sub ecx, eax
and edi, ecx
xor edi, 0xffffffff
mov edx, ebx
and edx, edi
mov edi, ebx
xor edi, 0xffffffff
mov ecx, esi
and ecx, edi
mov edi, esi
xor edi, ebx
mov ebx, dword [esp + 0x158]
add esi, edi
xor esi, 0xffffffff
add ecx, esi
or ecx, edx
mov dl, 0xd7
sub dl, cl
mov byte [esp + eax + 0x43], dl
add eax, 1
jmp 0x411dcb
lea eax, [esp + 0x43]
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x2a8], eax
mov al, byte [esp + 0x1a8]
mov byte [esp + 0x1e0], al
mov byte [esp + 0x58], 0xe2
mov byte [esp + 0x59], 0xf1
mov byte [esp + 0x5a], 0x46
xor eax, eax
cmp eax, 3
jae 0x411e8d
movzx edx, byte [esp + eax + 0x58]
mov esi, eax
add esi, 0x5d701864
mov ecx, esi
or ecx, edx
and esi, edx
add ecx, 0xc0
sub ecx, esi
add cl, 0x20
mov byte [esp + eax + 0x58], cl
add eax, 1
jmp 0x411e61
lea eax, [esp + 0x58]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call fcn.00401980
fnstcw word [esp + 0x8c]
movzx eax, word [esp + 0x8c]
or eax, 0xc00
mov word [esp + 0x246], ax
fldcw word [esp + 0x246]
fistp dword [esp + 0x2bc]
fldcw word [esp + 0x8c]
mov eax, dword [esp + 0x2bc]
mov dword [esp + 0xb8], eax
mov al, byte [esp + 0x1a4]
mov byte [esp + 0x1e4], al
mov byte [esp + 0x41], 0xda
mov byte [esp + 0x42], 0x70
xor eax, eax
cmp eax, 2
jae 0x411f40
movzx edx, byte [esp + eax + 0x41]
mov esi, eax
xor esi, 0x4a1680b9
mov ecx, eax
shl ecx, 1
and ecx, 0x6bd2fe8c
sub ecx, esi
xor ecx, edx
mov esi, ecx
add esi, 1
mov edx, ecx
xor edx, 0xffffffff
or edx, 0xc7
add edx, esi
or ecx, 0xc7
add edx, ecx
add dl, 1
mov byte [esp + eax + 0x41], dl
add eax, 1
jmp 0x411efa
lea eax, [esp + 0x41]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call fcn.00401980
fnstcw word [esp + 0x8a]
movzx eax, word [esp + 0x8a]
or eax, 0xc00
mov word [esp + 0x244], ax
fldcw word [esp + 0x244]
fistp dword [esp + 0x2b8]
fldcw word [esp + 0x8a]
mov edi, dword [esp + 0x2b8]
lea eax, [esp + 0x414]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0x400
mov eax, dword [esp + 0x2a8]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a950
lea eax, [esp + 0x414]
lea ecx, [esp + 0x34]
lea edx, [esp + 0x254]
xor esi, esi
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], 0
call fcn.0040b050
test al, 1
jne 0x411ff1
mov edi, dword [esp + 0x28]
jmp 0x413bd2
cmp edi, 0
sete al
mov byte [esp + 0x51], al
test al, 1
jne 0x412004
jmp 0x41317f
mov al, byte [esp + 0x1a0]
mov byte [esp + 0x1e8], al
mov byte [esp + 0x3f], 9
mov byte [esp + 0x40], 0x7a
xor eax, eax
cmp eax, 2
jae 0x41207a
movzx edi, byte [esp + eax + 0x3f]
mov edx, eax
add edx, 0x93058af1
mov ecx, 0x6cfa750e
sub ecx, eax
and ecx, 0xa1ce8ace
mov esi, edx
and esi, 0x5e317531
or ecx, esi
xor ecx, edi
xor ecx, 0xa1ce8ace
mov esi, eax
add esi, 0xf1
and esi, edi
or ecx, esi
and edx, edi
sub ecx, edx
add ecx, 0x67d3a877
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x3f], cl
add eax, 1
jmp 0x41201e
lea eax, [esp + 0x3f]
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
cmp eax, 0
je 0x4122b4
mov dword [esp + 0x268], eax
mov dword [esp], eax
call fcn.00413bf0
mov edi, eax
mov eax, edi
sub eax, 0xffffffff
mov ecx, 2
mov dword [esp + 0x260], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4120ca
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov esi, eax
xor eax, eax
mov dword [esp], esi
mov eax, dword [esp + 0x260]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x268]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a950
xor eax, eax
lea eax, [esp + 0x19c]
mov dword [esp], 0
mov dword [esp + 0xb4], esi
mov dword [esp + 4], esi
mov dword [esp + 0x2a4], edi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x447600]
sub esp, 0x18
mov dword [esp + 0x26c], eax
mov cl, byte [esp + 0x198]
mov byte [esp + 0x1ec], cl
mov byte [esp + 0x6e], 0x98
mov byte [esp + 0x6f], 0xbc
mov byte [esp + 0x70], 0xbd
mov byte [esp + 0x71], 0x7e
xor edi, edi
cmp edi, 4
jae 0x4121a4
movzx esi, byte [esp + edi + 0x6e]
mov edx, 0x5c
sub edx, edi
or edx, esi
mov ecx, 0x5c
sub ecx, edi
mov eax, ebx
mov ebx, 0x5c
sub ebx, edi
or ecx, ebx
mov ebx, eax
and ecx, esi
xor edx, 0xffffffff
or ecx, edx
add cl, 0xe8
mov byte [esp + edi + 0x6e], cl
add edi, 1
jmp 0x41216a
mov eax, dword [esp + 0x26c]
cmp eax, dword [esp + 0x6e]
sete al
test al, 1
mov edi, dword [esp + 0x28]
jne 0x4121bc
jmp 0x4121e5
jmp 0x4121be
mov eax, dword [esp + 0xb4]
mov dword [esp], eax
call fcn.00408010
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call fcn.004375e0
xor esi, esi
mov eax, 4
jmp 0x4122a6
mov eax, dword [esp + 0x19c]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412202
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov ecx, dword [0x447600]
mov dword [esp + 0x258], ecx
mov ecx, dword [esp + 0x19c]
xor edx, edx
lea edx, [esp + 0x19c]
mov dword [esp], 0
mov esi, dword [esp + 0xb4]
mov dword [esp + 4], esi
mov esi, eax
mov eax, dword [esp + 0x2a4]
mov dword [esp + 8], eax
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call dword [esp + 0x258]
sub esp, 0x18
cmp eax, 0
jge 0x412291
jmp 0x412263
mov dword [esp], esi
call fcn.00408010
jmp 0x41226d
jmp 0x41226f
mov eax, dword [esp + 0xb4]
mov dword [esp], eax
call fcn.00408010
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call fcn.004375e0
mov eax, 4
jmp 0x4122a6
jmp 0x412293
mov eax, dword [esp + 0xb4]
mov dword [esp], eax
call fcn.00408010
xor eax, eax
jmp 0x4122a6
cmp eax, 0
je 0x412914
jmp 0x412916
call fcn.00408710
and eax, 0xf
xor ecx, ecx
sub ecx, eax
add ecx, 0xfffffff0
xor edx, edx
sub edx, ecx
xor esi, esi
lea ecx, [esp + 0x3d4]
jmp 0x4122d5
cmp esi, edx
setb al
test al, 1
jne 0x4124bc
jmp 0x4122e4
mov word [ecx], 0
mov al, byte [esp + 0x190]
mov byte [esp + 0x1f4], al
mov byte [esp + 0xbe], 0xdd
mov byte [esp + 0xbf], 0xf9
mov byte [esp + 0xc0], 0x2e
mov byte [esp + 0xc1], 0xfb
mov byte [esp + 0xc2], 0x39
mov byte [esp + 0xc3], 0xfd
mov byte [esp + 0xc4], 0x33
mov byte [esp + 0xc5], 0xff
mov byte [esp + 0xc6], 0x50
mov byte [esp + 0xc7], 0x81
mov byte [esp + 0xc8], 0xa7
mov byte [esp + 0xc9], 0x83
mov byte [esp + 0xca], 0x58
mov byte [esp + 0xcb], 0x85
mov byte [esp + 0xcc], 0x86
mov byte [esp + 0xcd], 0x87
xor eax, eax
cmp eax, 0x10
jae 0x4123aa
movzx edx, byte [esp + eax + 0xbe]
mov ecx, eax
add ecx, 0x38
mov esi, 0xc7
sub esi, eax
and esi, edx
xor edx, 0xffffffff
and ecx, edx
or ecx, esi
add cl, 0x40
mov byte [esp + eax + 0xbe], cl
add eax, 1
jmp 0x412379
lea eax, [esp + 0x374]
lea ecx, [esp + 0xbe]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00409c40
lea ecx, [esp + 0x3d4]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00409c40
lea ecx, [esp + 0x374]
sub eax, ecx
sar eax, 1
xor ecx, ecx
lea edx, [esp + 0x374]
lea ecx, [esp + 0x18c]
mov dword [esp], 0
mov dword [esp + 4], edx
mov dword [esp + 0x2b4], eax
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], ecx
call dword [0x447600]
sub esp, 0x18
mov cl, byte [esp + 0x188]
mov byte [esp + 0x1f8], cl
mov byte [esp + 0x66], 0x39
mov byte [esp + 0x67], 0x1b
mov byte [esp + 0x68], 0x1c
mov byte [esp + 0x69], 0x5d
xor ecx, ecx
cmp ecx, 4
jae 0x4124a0
movzx edx, byte [esp + ecx + 0x66]
mov esi, ecx
and esi, 0x9c2d19bb
xor esi, 0x9c2d19bb
mov edi, ecx
and edi, 0x63d2e644
sub edi, esi
mov ebx, 0xfa
sub ebx, edi
mov esi, 0xfa
sub esi, edi
and esi, ebx
or esi, edx
mov ebx, 0xfa
sub ebx, edi
and ebx, edx
xor esi, 0xffffffff
or ebx, esi
add bl, 0xb0
mov byte [esp + ecx + 0x66], bl
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
jmp 0x412449
mov ecx, dword [esp + 0x66]
cmp eax, ecx
mov ebx, dword [esp + 0x158]
mov edi, dword [esp + 0x28]
jne 0x41256a
jmp 0x412582
mov dword [esp + 0x28c], ecx
mov dword [esp + 0x290], edx
call fcn.00408710
mov dword [esp + 0x270], eax
mov cl, byte [esp + 0x194]
mov byte [esp + 0x1f0], cl
mov byte [esp + 0x6a], 9
mov byte [esp + 0x6b], 0x6e
mov byte [esp + 0x6c], 0x6f
mov byte [esp + 0x6d], 0x60
xor edi, edi
cmp edi, 4
jae 0x412534
mov eax, esi
movzx esi, byte [esp + edi + 0x6a]
mov edx, 0xba
sub edx, edi
or edx, esi
mov ecx, 0xba
sub ecx, edi
mov ebx, 0xba
sub ebx, edi
or ecx, ebx
and ecx, esi
mov esi, eax
xor edx, 0xffffffff
or ecx, edx
add cl, 0xd8
mov byte [esp + edi + 0x6a], cl
add edi, 1
jmp 0x4124fa
mov ecx, dword [esp + 0x6a]
jmp 0x41253a
mov eax, dword [esp + 0x270]
cdq
idiv ecx
movsx eax, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov edx, dword [esp + 0x28c]
mov ecx, edx
add ecx, 2
mov word [edx], ax
add esi, 1
mov edx, dword [esp + 0x290]
jmp 0x4122d5
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call fcn.004375e0
xor esi, esi
mov eax, 4
jmp 0x412907
mov eax, dword [esp + 0x18c]
mov dword [esp + 0x25c], eax
mov al, byte [esp + 0x184]
mov byte [esp + 0x1fc], al
mov byte [esp + 0x62], 0x18
mov byte [esp + 0x63], 0x1d
mov byte [esp + 0x64], 0x1e
mov byte [esp + 0x65], 0x1f
xor edx, edx
cmp edx, 4
jae 0x412608
movzx esi, byte [esp + edx + 0x62]
mov eax, edx
add eax, 0xfc
mov ecx, edx
add ecx, 0xfc
mov edi, edx
add edi, 0xfc
or edi, ecx
and edi, esi
mov ecx, 3
sub ecx, edx
and ecx, 0x31
and eax, 0xce
or ecx, eax
xor ecx, 0xce
xor esi, 0xffffffff
and ecx, esi
or ecx, edi
mov edi, dword [esp + 0x28]
mov al, 0x1f
sub al, cl
mov byte [esp + edx + 0x62], al
add edx, 1
jmp 0x4125b4
mov edx, dword [esp + 0x62]
mov eax, dword [esp + 0x25c]
mov ecx, eax
and ecx, edx
shl ecx, 1
xor eax, edx
add eax, ecx
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412633
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov esi, dword [0x447600]
mov ecx, dword [esp + 0x18c]
xor edx, edx
lea edx, [esp + 0x374]
mov dword [esp], 0
mov dword [esp + 4], edx
mov edx, dword [esp + 0x2b4]
mov dword [esp + 8], edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [esp + 0x18c]
mov dword [esp + 0x14], eax
call esi
sub esp, 0x18
cmp eax, 0
jge 0x4126ae
jmp 0x41268a
mov esi, dword [esp + 0x2c]
mov dword [esp], esi
call fcn.00408010
jmp 0x412698
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call fcn.004375e0
mov eax, 4
jmp 0x412907
mov ecx, dword [esp + 0xb8]
cmp ecx, 0
jne 0x41276f
mov esi, dword [esp + 0x2c]
mov al, byte [esp + 0x180]
mov byte [esp + 0x200], al
mov byte [esp + 0xaa], 0xd9
mov byte [esp + 0xab], 0xf8
mov byte [esp + 0xac], 0x5c
mov byte [esp + 0xad], 0xfa
mov byte [esp + 0xae], 0x73
mov byte [esp + 0xaf], 0xfc
mov byte [esp + 0xb0], 0x58
mov byte [esp + 0xb1], 0xfe
mov byte [esp + 0xb2], 0xff
mov byte [esp + 0xb3], 0xf0
xor eax, eax
cmp eax, 0xa
jae 0x412757
movzx edx, byte [esp + eax + 0xaa]
mov ecx, eax
add ecx, 0xd4e020ff
xor ecx, edx
add ecx, 0x58fef807
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0xaa], cl
add eax, 1
jmp 0x412722
lea eax, [esp + 0xaa]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.00413fc0
jmp 0x412903
cmp ecx, 1
sete al
mov esi, dword [esp + 0x2c]
test al, 1
jne 0x412782
jmp 0x412837
mov al, byte [esp + 0x17c]
mov byte [esp + 0x204], al
mov byte [esp + 0xa0], 0xdc
mov byte [esp + 0xa1], 0xf3
mov byte [esp + 0xa2], 0x90
mov byte [esp + 0xa3], 0xf5
mov byte [esp + 0xa4], 0x9a
mov byte [esp + 0xa5], 0xf7
mov byte [esp + 0xa6], 0x94
mov byte [esp + 0xa7], 0xf9
mov byte [esp + 0xa8], 0xfa
mov byte [esp + 0xa9], 0xfb
xor eax, eax
cmp eax, 0xa
jae 0x41281f
mov dl, byte [esp + eax + 0xa0]
mov esi, eax
add esi, 1
mov ecx, eax
xor ecx, 0xffffffff
or ecx, 0xe2
add ecx, esi
mov esi, eax
or esi, 0xe2
add ecx, esi
mov esi, dword [esp + 0x2c]
xor cl, dl
add cl, 0xf0
mov byte [esp + eax + 0xa0], cl
add eax, 1
jmp 0x4127e2
lea eax, [esp + 0xa0]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.00413fc0
jmp 0x412903
cmp ecx, 2
jne 0x412903
mov al, byte [esp + 0x178]
mov byte [esp + 0x208], al
mov byte [esp + 0x96], 0x19
mov byte [esp + 0x97], 0xb8
mov byte [esp + 0x98], 0x29
mov byte [esp + 0x99], 0xba
mov byte [esp + 0x9a], 0x28
mov byte [esp + 0x9b], 0xbc
mov byte [esp + 0x9c], 0x6c
mov byte [esp + 0x9d], 0xbe
mov byte [esp + 0x9e], 0xbf
mov byte [esp + 0x9f], 0xb0
xor eax, eax
cmp eax, 0xa
jae 0x4128f0
movzx edi, byte [esp + eax + 0x96]
mov edx, 0xd16fe8c0
sub edx, eax
or edx, edi
mov ecx, 0xc0
sub ecx, eax
mov esi, 0xc0
sub esi, eax
or ecx, esi
mov esi, dword [esp + 0x2c]
and ecx, edi
mov edi, dword [esp + 0x28]
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0xe
xor ecx, 7
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x96], cl
add eax, 1
jmp 0x4128a0
lea eax, [esp + 0x96]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.00413fc0
xor eax, eax
jmp 0x412907
cmp eax, 0
sete cl
test cl, 1
jne 0x412914
jmp 0x412916
xor eax, eax
cmp eax, 0
jne 0x413bd2
lea eax, [esp + 0x250]
xor ecx, ecx
mov dword [esp], esi
mov dword [esp + 4], eax
mov dword [esp + 8], 0x100002
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 5
mov dword [esp + 0x14], 0x60
mov dword [esp + 0x18], 0x80
call fcn.0043ace0
mov dword [esp + 0x248], eax
cmp eax, 0
setge al
test al, 1
mov dword [esp + 0x2c], esi
jne 0x412976
jmp 0x412a9d
mov eax, dword [esp + 0x254]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x250]
xor esi, esi
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0043b5d0
mov dword [esp + 0x248], eax
mov eax, dword [esp + 0x250]
mov dword [esp + 0x2a0], eax
mov al, byte [esp + 0x1cc]
mov byte [esp + 0x230], al
mov byte [esp + 0x82], 0x2e
mov byte [esp + 0x83], 0x2d
mov byte [esp + 0x84], 0x2c
mov byte [esp + 0x85], 0x2b
xor eax, eax
cmp eax, 4
jae 0x412a15
movzx edx, byte [esp + eax + 0x82]
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 + 0x82], cl
add eax, 1
jmp 0x4129e7
mov eax, dword [esp + 0x82]
mov dword [esp + 0x284], eax
xor edx, edx
mov esi, dword [esp + 0x2c]
cmp edx, dword [0x447604]
jb 0x412a33
jmp 0x412a9b
mov eax, dword [0x447608]
cmp dword [eax + edx*8], 0xb430e561
sete cl
mov byte [esp + 0x4d], cl
test cl, 1
jne 0x412a4d
jmp 0x412a8d
mov eax, dword [eax + edx*8 + 4]
cmp eax, dword [esp + 0x284]
je 0x412a8d
mov ecx, dword [0x44760c]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esp + 0x2a0]
mov dword [esp + 0xc], eax
mov dword [esp + 0x274], edx
call fcn.00439030
mov edx, dword [esp + 0x274]
test byte [esp + 0x4d], 1
je 0x412a96
jmp 0x412a9b
add edx, 1
jmp 0x412a29
jmp 0x412a9d
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call fcn.004375e0
mov dword [esp + 0x34], 0
cmp dword [esp + 0x248], 0
jge 0x412ad4
mov ecx, dword [esp + 0xb8]
mov dword [esp + 0x30], 0
mov eax, 4
jmp 0x41316c
mov ecx, dword [esp + 0xb8]
cmp ecx, 1
jne 0x412e34
mov al, byte [esp + 0x174]
mov byte [esp + 0x20c], al
mov byte [esp + 0x55], 0x7d
mov byte [esp + 0x56], 0x82
mov byte [esp + 0x57], 0x1d
xor eax, eax
cmp eax, 3
jae 0x412b32
movzx edx, byte [esp + eax + 0x55]
mov esi, eax
add esi, 3
mov ecx, 0xfc
sub ecx, eax
and ecx, edx
xor edx, 0xffffffff
and esi, edx
or ecx, esi
mov esi, dword [esp + 0x2c]
add cl, 0xe8
mov byte [esp + eax + 0x55], cl
add eax, 1
jmp 0x412b03
lea eax, [esp + 0x55]
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x154], eax
mov al, byte [esp + 0x170]
mov byte [esp + 0x210], al
mov byte [esp + 0x52], 0x43
mov byte [esp + 0x53], 0xb1
mov byte [esp + 0x54], 0x24
xor eax, eax
cmp eax, 3
jae 0x412baf
movzx edx, byte [esp + eax + 0x52]
mov ecx, eax
add ecx, 0x91664b2
mov esi, ecx
and esi, edx
shl esi, 1
sub ecx, esi
add ecx, edx
mov edx, ecx
add edx, 0xbf
mov esi, 0x40
sub esi, ecx
and esi, 0x4f
and edx, 0xb0
sub edx, esi
mov esi, dword [esp + 0x2c]
mov byte [esp + eax + 0x52], dl
add eax, 1
jmp 0x412b6c
lea eax, [esp + 0x52]
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401880
mov dword [esp + 0x150], eax
mov dword [esp], esi
call fcn.00414010
mov edi, eax
cmp dword [esp + 0x154], 0
setne al
mov dword [esp + 0x14c], 0
mov byte [esp + 0x4f], al
test al, 1
jne 0x412bf4
jmp 0x412c0f
mov eax, dword [esp + 0x154]
mov dword [esp], eax
call fcn.00408120
sub eax, 0xffffffff
mov dword [esp + 0x14c], eax
jmp 0x412c0f
cmp dword [esp + 0x150], 0
setne al
xor ecx, ecx
mov byte [esp + 0x50], al
test al, 1
jne 0x412c26
jmp 0x412c42
mov eax, dword [esp + 0x150]
mov dword [esp], eax
call fcn.00408120
xor ecx, ecx
sub ecx, eax
add ecx, 0xffffffff
xor eax, eax
sub eax, ecx
mov ecx, eax
add edi, 9
xor eax, eax
sub eax, dword [esp + 0x14c]
sub edi, eax
mov dword [esp + 0x2b0], ecx
add edi, ecx
mov eax, edi
and eax, 1
or edi, 1
add edi, eax
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412c7b
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov dword [esp + 0x30], eax
mov al, byte [esp + 0x16c]
mov byte [esp + 0x214], al
mov byte [esp + 0xce], 0xc7
mov byte [esp + 0xcf], 0x76
mov byte [esp + 0xd0], 0xc2
mov byte [esp + 0xd1], 0x48
mov byte [esp + 0xd2], 0xf7
mov byte [esp + 0xd3], 0x4a
mov byte [esp + 0xd4], 0xef
mov byte [esp + 0xd5], 0x4c
mov byte [esp + 0xd6], 0xf1
mov byte [esp + 0xd7], 0x4e
mov byte [esp + 0xd8], 0xf3
mov byte [esp + 0xd9], 0x40
mov byte [esp + 0xda], 0xb2
mov byte [esp + 0xdb], 0x42
mov byte [esp + 0xdc], 0xb1
mov byte [esp + 0xdd], 0x44
mov byte [esp + 0xde], 0x45
mov byte [esp + 0xdf], 0x46
xor eax, eax
cmp eax, 0x12
jae 0x412d5c
mov cl, byte [esp + eax + 0xce]
mov dl, al
add dl, 0x9d
xor dl, cl
add dl, 0x18
mov byte [esp + eax + 0xce], dl
add eax, 0xa7553130
mov ecx, eax
xor ecx, 0xa755312f
shl eax, 1
and eax, 0xa0
sub eax, ecx
jmp 0x412d27
lea eax, [esp + 0xce]
mov ecx, dword [esp + 0x30]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00409c40
mov ecx, eax
add ecx, 2
mov word [eax], 0x20
add ecx, 2
mov word [eax + 2], 0x22
mov dword [esp], ecx
mov dword [esp + 4], esi
call fcn.00409c40
mov edi, eax
add edi, 2
mov word [eax], 0x22
cmp esi, 0
je 0x412da9
mov dword [esp], esi
call fcn.00408010
test byte [esp + 0x4f], 1
jne 0x412db2
jmp 0x412dec
mov esi, edi
add esi, 2
mov word [edi], 0x2c
xor eax, eax
mov dword [esp], esi
mov eax, dword [esp + 0x14c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x154]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a950
shl eax, 1
mov edi, esi
add edi, eax
jmp 0x412dec
test byte [esp + 0x50], 1
jne 0x412df5
jmp 0x412e27
mov eax, edi
add eax, 2
mov word [edi], 0x2c
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x2b0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x150]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a950
xor esi, esi
xor ecx, ecx
mov edi, dword [esp + 0x28]
jmp 0x41316a
cmp ecx, 2
je 0x412e46
mov dword [esp + 0x30], 0
jmp 0x41316a
mov dword [esp], esi
call fcn.00414010
add eax, 0x1d
add eax, 1
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412e6a
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov dword [esp + 0x30], eax
mov al, byte [esp + 0x168]
mov byte [esp + 0x218], al
mov byte [esp + 0x5e], 0x76
mov byte [esp + 0x5f], 0x15
mov byte [esp + 0x60], 0x16
mov byte [esp + 0x61], 0x17
xor eax, eax
cmp eax, 4
jae 0x412f07
movzx ecx, byte [esp + eax + 0x5e]
mov esi, eax
shl esi, 1
and esi, 0xf7512b68
mov edi, eax
shl edi, 1
and edi, 0xf7512b68
mov edx, eax
add edx, 0xfba895b4
sub edx, edi
add edx, esi
mov edi, edx
and edi, ecx
mov ebx, edi
and ebx, 0xfd
mov esi, edi
and esi, 2
xor esi, 2
imul esi, ebx
mov ebx, edi
and ebx, 2
or edi, 2
imul edi, ebx
mov ebx, dword [esp + 0x158]
add edi, esi
mov esi, dword [esp + 0x2c]
add edx, ecx
sub edx, edi
mov edi, dword [esp + 0x28]
add dl, 0x60
mov byte [esp + eax + 0x5e], dl
add eax, 1
jmp 0x412e9a
mov al, byte [esp + 0x164]
mov byte [esp + 0x21c], al
mov byte [esp + 0x112], 0x5a
mov byte [esp + 0x113], 0xcb
mov byte [esp + 0x114], 0x23
mov byte [esp + 0x115], 0xcd
mov byte [esp + 0x116], 0x59
mov byte [esp + 0x117], 0xcf
mov byte [esp + 0x118], 0x15
mov byte [esp + 0x119], 0xf1
mov byte [esp + 0x11a], 0x60
mov byte [esp + 0x11b], 0xf3
mov byte [esp + 0x11c], 0x67
mov byte [esp + 0x11d], 0xf5
mov byte [esp + 0x11e], 0x1e
mov byte [esp + 0x11f], 0xf7
mov byte [esp + 0x120], 0x1d
mov byte [esp + 0x121], 0xf9
mov byte [esp + 0x122], 0x16
mov byte [esp + 0x123], 0xfb
mov byte [esp + 0x124], 0x10
mov byte [esp + 0x125], 0xfd
mov byte [esp + 0x126], 0xde
mov byte [esp + 0x127], 0xff
mov byte [esp + 0x128], 0xcd
mov byte [esp + 0x129], 0xe1
mov byte [esp + 0x12a], 7
mov byte [esp + 0x12b], 0xe3
mov byte [esp + 0x12c], 0x7c
mov byte [esp + 0x12d], 0xe5
mov byte [esp + 0x12e], 3
mov byte [esp + 0x12f], 0xe7
mov byte [esp + 0x130], 0xb
mov byte [esp + 0x131], 0xe9
mov byte [esp + 0x132], 0xca
mov byte [esp + 0x133], 0xeb
mov byte [esp + 0x134], 0xe
mov byte [esp + 0x135], 0xed
mov byte [esp + 0x136], 0x77
mov byte [esp + 0x137], 0xef
mov byte [esp + 0x138], 0
mov byte [esp + 0x139], 0x91
mov byte [esp + 0x13a], 0x73
mov byte [esp + 0x13b], 0x93
mov byte [esp + 0x13c], 7
mov byte [esp + 0x13d], 0x95
mov byte [esp + 0x13e], 5
mov byte [esp + 0x13f], 0x97
mov byte [esp + 0x140], 0xb8
mov byte [esp + 0x141], 0x99
mov byte [esp + 0x142], 0xb7
mov byte [esp + 0x143], 0x9b
mov byte [esp + 0x144], 0x7a
mov byte [esp + 0x145], 0x9d
mov byte [esp + 0x146], 0xbe
mov byte [esp + 0x147], 0x9f
mov byte [esp + 0x148], 0xa2
mov byte [esp + 0x149], 0x81
mov byte [esp + 0x14a], 0x82
mov byte [esp + 0x14b], 0x83
xor eax, eax
cmp eax, 0x3a
jae 0x413132
movzx edx, byte [esp + eax + 0x112]
mov esi, eax
and esi, 0x3a791be6
xor esi, 0x3a791be6
mov ecx, eax
and ecx, 0xc586e419
sub ecx, esi
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
sub ecx, esi
mov esi, dword [esp + 0x2c]
add cl, 0x30
mov byte [esp + eax + 0x112], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x4130e7
lea eax, [esp + 0x112]
mov ecx, dword [esp + 0x30]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00409c40
mov dword [esp], eax
mov dword [esp + 4], esi
call fcn.00409c40
lea ecx, [esp + 0x5e]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00409c40
mov ecx, 2
xor eax, eax
cmp eax, 0
sete al
test al, 1
jne 0x41347f
jmp 0x413bd2
xor edi, 1
mov ecx, dword [esp + 0xb8]
mov eax, ecx
xor eax, 2
or edi, eax
sete al
mov dword [esp + 0x30], 0
test al, 1
mov esi, 0
mov edi, dword [esp + 0x28]
jne 0x4131ad
jmp 0x41347f
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call fcn.00413bf0
mov edi, eax
sub edi, 0xffffffff
mov ecx, 2
mov eax, edi
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4131d6
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov esi, eax
mov eax, dword [esp + 0x34]
xor ecx, ecx
mov dword [esp], esi
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a950
mov eax, dword [esp + 0x254]
mov ecx, eax
and ecx, 0x18
shl ecx, 1
xor eax, 0x18
add eax, ecx
mov ecx, eax
and ecx, 1
shl ecx, 1
xor eax, 1
add eax, ecx
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x413233
mov ecx, eax
mov dword [esp], ecx
call fcn.00408000
mov dword [esp + 0x30], eax
mov al, byte [esp + 0x160]
mov byte [esp + 0x220], al
mov byte [esp + 0xe0], 0x2a
mov byte [esp + 0xe1], 0xbb
mov byte [esp + 0xe2], 0x53
mov byte [esp + 0xe3], 0xbd
mov byte [esp + 0xe4], 0x29
mov byte [esp + 0xe5], 0xbf
mov byte [esp + 0xe6], 0x45
mov byte [esp + 0xe7], 0xa1
mov byte [esp + 0xe8], 0x30
mov byte [esp + 0xe9], 0xa3
mov byte [esp + 0xea], 0x37
mov byte [esp + 0xeb], 0xa5
mov byte [esp + 0xec], 0x4e
mov byte [esp + 0xed], 0xa7
mov byte [esp + 0xee], 0x4d
mov byte [esp + 0xef], 0xa9
mov byte [esp + 0xf0], 0x46
mov byte [esp + 0xf1], 0xab
mov byte [esp + 0xf2], 0x40
mov byte [esp + 0xf3], 0xad
mov byte [esp + 0xf4], 0x8e
mov byte [esp + 0xf5], 0xaf
mov byte [esp + 0xf6], 0x7d
mov byte [esp + 0xf7], 0x51
mov byte [esp + 0xf8], 0xb7
mov byte [esp + 0xf9], 0x53
mov byte [esp + 0xfa], 0xcc
mov byte [esp + 0xfb], 0x55
mov byte [esp + 0xfc], 0xb3
mov byte [esp + 0xfd], 0x57
mov byte [esp + 0xfe], 0xbb
mov byte [esp + 0xff], 0x59
mov byte [esp + 0x100], 0x7a
mov byte [esp + 0x101], 0x5b
mov byte [esp + 0x102], 0xbe
mov byte [esp + 0x103], 0x5d
mov byte [esp + 0x104], 0xc7
mov byte [esp + 0x105], 0x5f
mov byte [esp + 0x106], 0xd0
mov byte [esp + 0x107], 0x41
mov byte [esp + 0x108], 0xa3
mov byte [esp + 0x109], 0x43
mov byte [esp + 0x10a], 0xd7
mov byte [esp + 0x10b], 0x45
mov byte [esp + 0x10c], 0xd5
mov byte [esp + 0x10d], 0x47
mov byte [esp + 0x10e], 0x68
mov byte [esp + 0x10f], 0x49
mov byte [esp + 0x110], 0x4a
mov byte [esp + 0x111], 0x4b
xor eax, eax
cmp eax, 0x32
jae 0x413445
movzx edx, byte [esp + eax + 0xe0]
mov edi, eax
add edi, 0x6d72c8ea
mov ecx, eax
add ecx, 0x6d72c8ea
or ecx, 0xb0c22865
sub ecx, eax
add ecx, 0x928d3716
and edi, 0x4f3dd79a
mov dword [esp + 0x2ac], esi
mov esi, edx
xor esi, 0x65
or ecx, edi
mov edi, ecx
xor edi, 0xffffffff
and esi, edi
xor edx, 0x9a
and ecx, edx
or ecx, esi
mov esi, dword [esp + 0x2ac]
add cl, 0xb0
mov byte [esp + eax + 0xe0], cl
add eax, 1
jmp 0x4133df
lea eax, [esp + 0xe0]
mov ecx, dword [esp + 0x30]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00409c40
mov dword [esp], eax
mov dword [esp + 4], esi
call fcn.00409c40
mov edi, dword [esp + 0x28]
mov dword [esp], esi
call fcn.00408010
jmp 0x413476
xor esi, esi
mov ecx, 2
jmp 0x41347f
test ecx, ecx
je 0x4134a0
jmp 0x413485
mov eax, ecx
sub eax, 1
je 0x41363f
jmp 0x413492
sub ecx, 2
je 0x413964
jmp 0x413ba6
test byte [esp + 0x51], 1
jne 0x4134ac
jmp 0x41363f
call fcn.00414050
lea edi, [esp + 0x330]
xor eax, eax
mov ecx, 0x11
rep stosd dword es:[edi], eax
mov dword [esp + 0x330], 0x44
mov eax, dword [0x4465f8]
mov dword [esp], eax
mov dword [esp + 4], 0x755f867b
call fcn.0043a7f0
mov edi, eax
test edi, edi
setne al
call fcn.00414050
call fcn.00414050
xor eax, eax
lea eax, [esp + 0x330]
lea ecx, [esp + 0x2dc]
mov dword [esp], esi
mov edx, dword [esp + 0x30]
mov dword [esp + 4], edx
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
call edi
sub esp, 0x28
cmp eax, 0
setne al
test al, 1
mov edi, dword [esp + 0x28]
jne 0x41355d
jmp 0x41363a
mov eax, dword [esp + 0x2dc]
mov dword [esp + 0x294], eax
mov al, byte [esp + 0x1c8]
mov byte [esp + 0x234], al
mov byte [esp + 0x7e], 0x2e
mov byte [esp + 0x7f], 0x2d
mov byte [esp + 0x80], 0x2c
mov byte [esp + 0x81], 0x2b
xor eax, eax
cmp eax, 4
jae 0x4135c1
movzx edx, byte [esp + eax + 0x7e]
mov edi, esi
mov esi, eax
add esi, 0x69
and esi, edx
shl esi, 1
mov ecx, eax
add ecx, 0x69
add ecx, edx
sub ecx, esi
mov esi, edi
add cl, 0xb8
mov byte [esp + eax + 0x7e], cl
add eax, 1
jmp 0x413595
mov ecx, dword [esp + 0x7e]
xor edi, edi
cmp edi, dword [0x447604]
jb 0x4135d1
jmp 0x413636
mov eax, dword [0x447608]
cmp dword [eax + edi*8], 0xb430e561
sete dl
test dl, 1
jne 0x4135e7
jmp 0x41362a
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x41362a
mov dword [esp + 0x278], ecx
mov ecx, dword [0x44760c]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esp + 0x294]
mov dword [esp + 0xc], eax
mov byte [esp + 0x49], dl
call fcn.00439030
mov dl, byte [esp + 0x49]
mov ecx, dword [esp + 0x278]
test dl, 1
je 0x413631
jmp 0x413636
add edi, 1
jmp 0x4135c7
mov edi, dword [esp + 0x28]
jmp 0x413ba6
call fcn.00414050
mov eax, dword [0x4465f8]
mov dword [esp], eax
mov dword [esp + 4], 0x4e0c8565
call fcn.0043a7f0
test eax, eax
setne cl
jmp 0x413660
mov ecx, dword [esp + 0x34]
xor edx, edx
lea edx, [0x421400]
mov dword [esp], 0
mov dword [esp + 4], 0
mov dword [esp + 8], edx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
call eax
sub esp, 0x18
mov dword [esp + 0x24c], eax
cmp eax, 0
setne al
test al, 1
jne 0x4136ae
jmp 0x41395f
mov al, byte [esp + 0x15c]
mov byte [esp + 0x224], al
mov byte [esp + 0x8e], 0xd7
mov byte [esp + 0x8f], 0x82
mov byte [esp + 0x90], 5
mov byte [esp + 0x91], 0xe6
mov byte [esp + 0x92], 0xc4
mov byte [esp + 0x93], 0xc3
mov byte [esp + 0x94], 0xc2
mov byte [esp + 0x95], 0xc1
xor edx, edx
jmp 0x413700
cmp edx, 8
jae 0x41376f
movzx eax, byte [esp + edx + 0x8e]
mov dword [esp + 0x264], eax
mov edi, edx
and edi, 0x92677fad
mov ecx, edx
and ecx, 2
xor ecx, 2
mov eax, esi
mov esi, edx
and esi, 0x92677fad
imul esi, ecx
mov ecx, edx
and ecx, 2
or edi, 2
imul edi, ecx
add edi, esi
mov esi, eax
mov ecx, edx
xor ecx, 0x92677faf
add ecx, edi
xor ecx, dword [esp + 0x264]
add ecx, 0x308f0156
mov eax, ecx
shl eax, 1
and eax, 0x64
xor ecx, 0x32
add ecx, eax
mov byte [esp + edx + 0x8e], cl
add edx, 1
jmp 0x413700
mov eax, dword [esp + 0x8e]
mov ecx, dword [esp + 0x92]
mov dword [esp + 0x2c4], ecx
mov dword [esp + 0x2c0], eax
mov al, byte [esp + 0x228]
mov byte [esp + 0x22c], al
mov byte [esp + 0x86], 0x2e
mov byte [esp + 0x87], 0x2d
mov byte [esp + 0x88], 0x2c
mov byte [esp + 0x89], 0x2b
xor ecx, ecx
cmp ecx, 4
jae 0x4137ec
movzx edx, byte [esp + ecx + 0x86]
mov edi, esi
mov esi, ecx
add esi, 0x69
and esi, edx
shl esi, 1
mov eax, ecx
add eax, 0x69
add eax, edx
sub eax, esi
mov esi, edi
add al, 0xb8
mov byte [esp + ecx + 0x86], al
add ecx, 1
jmp 0x4137bb
mov edx, dword [esp + 0x86]
xor edi, edi
mov ecx, 2
cmp edi, dword [0x447604]
jb 0x413807
jmp 0x413890
mov eax, dword [0x447608]
cmp dword [eax + edi*8], 0xa67d73aa
sete cl
mov byte [esp + 0x4e], cl
test cl, 1
jne 0x413821
jmp 0x41387d
mov eax, dword [eax + edi*8 + 4]
mov ecx, 2
cmp eax, edx
je 0x41387f
mov ecx, dword [0x44760c]
mov dword [esp + 0x288], edx
xor edx, edx
lea edx, [esp + 0x2c0]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 0xc
mov eax, dword [esp + 0x24c]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], edx
call fcn.00439030
mov edx, dword [esp + 0x288]
mov ecx, 1
jmp 0x41387f
xor ecx, ecx
test byte [esp + 0x4e], 1
je 0x413888
jmp 0x413890
add edi, 1
jmp 0x4137f5
cmp ecx, 2
jne 0x413895
mov al, byte [esp + 0x1c4]
mov byte [esp + 0x238], al
mov byte [esp + 0x7a], 0x2e
mov byte [esp + 0x7b], 0x2d
mov byte [esp + 0x7c], 0x2c
mov byte [esp + 0x7d], 0x2b
xor ecx, ecx
cmp ecx, 4
jae 0x4138e4
movzx edx, byte [esp + ecx + 0x7a]
mov edi, esi
mov esi, ecx
add esi, 0x69
and esi, edx
shl esi, 1
mov eax, ecx
add eax, 0x69
add eax, edx
sub eax, esi
mov esi, edi
add al, 0xb8
mov byte [esp + ecx + 0x7a], al
add ecx, 1
jmp 0x4138b9
mov ecx, dword [esp + 0x7a]
xor edi, edi
cmp edi, dword [0x447604]
jb 0x4138f4
jmp 0x413959
mov eax, dword [0x447608]
cmp dword [eax + edi*8], 0xb430e561
sete dl
test dl, 1
jne 0x41390a
jmp 0x41394d
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x41394d
mov dword [esp + 0x27c], ecx
mov ecx, dword [0x44760c]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esp + 0x24c]
mov dword [esp + 0xc], eax
mov byte [esp + 0x4a], dl
call fcn.00439030
mov dl, byte [esp + 0x4a]
mov ecx, dword [esp + 0x27c]
test dl, 1
je 0x413954
jmp 0x413959
add edi, 1
jmp 0x4138ea
mov edi, dword [esp + 0x28]
jmp 0x41395f
jmp 0x413ba6
lea edi, [esp + 0x2ec]
xor eax, eax
mov ecx, 0x11
rep stosd dword es:[edi], eax
mov dword [esp + 0x2ec], 0x44
mov eax, dword [0x4465f8]
mov dword [esp], eax
mov dword [esp + 4], 0x755f867b
call fcn.0043a7f0
mov edi, eax
test edi, edi
setne al
call fcn.00414050
call fcn.00414050
xor eax, eax
lea eax, [esp + 0x2ec]
lea ecx, [esp + 0x2cc]
mov dword [esp], 0
mov edx, dword [esp + 0x30]
mov dword [esp + 4], edx
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0x8000000
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
call edi
sub esp, 0x28
cmp eax, 0
je 0x413ba2
mov dword [esp + 0x2c], esi
mov eax, dword [esp + 0x2d0]
mov dword [esp + 0x29c], eax
mov al, byte [esp + 0x1c0]
mov byte [esp + 0x23c], al
mov byte [esp + 0x76], 0x2e
mov byte [esp + 0x77], 0x2d
mov byte [esp + 0x78], 0x2c
mov byte [esp + 0x79], 0x2b
xor eax, eax
cmp eax, 4
jae 0x413a68
movzx edx, byte [esp + eax + 0x76]
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 + 0x76], cl
add eax, 1
jmp 0x413a40
mov esi, dword [esp + 0x76]
xor edi, edi
cmp edi, dword [0x447604]
jb 0x413a78
jmp 0x413acf
mov eax, dword [0x447608]
cmp dword [eax + edi*8], 0xb430e561
sete cl
test cl, 1
jne 0x413a8e
jmp 0x413ac3
mov eax, dword [eax + edi*8 + 4]
cmp eax, esi
je 0x413ac3
mov byte [esp + 0x4c], cl
mov ecx, dword [0x44760c]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esp + 0x29c]
mov dword [esp + 0xc], eax
call fcn.00439030
mov cl, byte [esp + 0x4c]
test cl, 1
je 0x413aca
jmp 0x413acf
add edi, 1
jmp 0x413a6e
mov eax, dword [esp + 0x2cc]
mov dword [esp + 0x298], eax
mov al, byte [esp + 0x1bc]
mov byte [esp + 0x240], al
mov byte [esp + 0x72], 0x2e
mov byte [esp + 0x73], 0x2d
mov byte [esp + 0x74], 0x2c
mov byte [esp + 0x75], 0x2b
xor eax, eax
cmp eax, 4
jae 0x413b29
movzx edx, byte [esp + eax + 0x72]
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 + 0x72], cl
add eax, 1
jmp 0x413b01
mov ecx, dword [esp + 0x72]
xor edi, edi
mov esi, dword [esp + 0x2c]
cmp edi, dword [0x447604]
jb 0x413b3d
jmp 0x413ba2
mov eax, dword [0x447608]
cmp dword [eax + edi*8], 0xb430e561
sete dl
test dl, 1
jne 0x413b53
jmp 0x413b96
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x413b96
mov dword [esp + 0x280], ecx
mov ecx, dword [0x44760c]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esp + 0x298]
mov dword [esp + 0xc], eax
mov byte [esp + 0x4b], dl
call fcn.00439030
mov dl, byte [esp + 0x4b]
mov ecx, dword [esp + 0x280]
test dl, 1
je 0x413b9d
jmp 0x413ba2
add edi, 1
jmp 0x413b33
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call fcn.004375e0
cmp esi, 0
je 0x413bbf
mov dword [esp], esi
call fcn.00408010
mov eax, dword [esp + 0x30]
cmp eax, 0
je 0x413bd0
mov dword [esp], eax
call fcn.00408010
jmp 0x413bd2
mov eax, edi
and eax, 1
or edi, 1
add edi, eax
jmp 0x411bec
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret