Function at 0x411980
Capabilities:
Contain obfuscated stackstrings
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x7e0
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.00401b50
mov ebx, eax
cmp ebx, 0
jne 0x4119a8
xor eax, eax
jmp 0x413cb4
xor esi, esi
jmp 0x4119ac
mov dword [esp], ebx
call fcn.00401f20
cmp esi, eax
setb al
test al, 1
jne 0x4119c6
jmp 0x4119bf
mov al, 1
jmp 0x413cb4
mov dword [esp], ebx
mov dword [esp + 4], esi
call fcn.00401f30
mov dword [esp + 0x2c], esi
mov esi, ebx
mov ebx, eax
mov al, byte [esp + 0x1b4]
mov byte [esp + 0x1cc], al
mov byte [esp + 0x3a], 0x6e
mov byte [esp + 0x3b], 0xfc
movzx eax, byte [esp + 0x3a]
mov ecx, eax
and ecx, 0xe3
mov edx, ecx
and edx, 2
xor edx, 2
mov edi, ecx
and edi, 0xfd
imul edi, edx
mov edx, ecx
and edx, 2
or ecx, 2
imul ecx, edx
add ecx, edi
mov edi, ebx
mov ebx, esi
mov esi, dword [esp + 0x2c]
add eax, 0xe3
sub eax, ecx
add al, 0xe8
mov byte [esp + 0x3a], al
movzx eax, byte [esp + 0x3b]
mov ecx, eax
and ecx, 0xe4
shl ecx, 1
add eax, 0xe4
sub eax, ecx
add al, 0xe8
mov byte [esp + 0x3b], al
lea eax, [esp + 0x3a]
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401e20
cmp eax, 0
je 0x411ba9
mov al, byte [esp + 0x1b0]
mov byte [esp + 0x1d0], al
mov byte [esp + 0x81], 0xb1
mov byte [esp + 0x82], 0x9c
mov byte [esp + 0x83], 9
xor eax, eax
mov dword [esp + 0xb8], edi
mov dword [esp + 0x88], ebx
cmp eax, 3
jae 0x411b24
movzx ebx, byte [esp + eax + 0x81]
mov ecx, eax
add ecx, 1
mov edi, eax
xor edi, 0xffffffff
or edi, 0x2247b46f
add edi, ecx
mov ecx, eax
or ecx, 0x2247b46f
add edi, ecx
mov edx, edi
add edx, 1
mov esi, edi
xor esi, 0xffffffff
mov ecx, ebx
or ecx, esi
add ecx, edx
shl ecx, 1
mov esi, ecx
xor esi, 0xffffffff
mov edx, edi
and edx, esi
mov esi, dword [esp + 0x2c]
xor edi, 0xffffffff
and ecx, edi
mov edi, dword [esp + 0xb8]
sub edx, ecx
add edx, ebx
mov ebx, dword [esp + 0x88]
mov ecx, edx
shl ecx, 1
and ecx, 0xe
xor edx, 0x87
add edx, ecx
add dl, 1
mov byte [esp + eax + 0x81], dl
add eax, 1
jmp 0x411aa7
lea eax, [esp + 0x81]
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401e20
cmp eax, 0
je 0x411ba9
mov al, byte [esp + 0x1ac]
mov byte [esp + 0x1d4], al
mov byte [esp + 0x38], 0x89
mov byte [esp + 0x39], 0x2d
movzx eax, byte [esp + 0x38]
mov ecx, eax
and ecx, 0x4c
add ecx, ecx
sub eax, ecx
add al, 0xec
mov byte [esp + 0x38], al
movzx eax, byte [esp + 0x39]
mov ecx, eax
and ecx, 0x4d
add ecx, ecx
sub eax, ecx
add al, 0xed
mov byte [esp + 0x39], al
lea eax, [esp + 0x38]
mov dword [esp + 4], eax
mov dword [esp], edi
mov dword [esp + 8], 3
call fcn.00401e20
sub eax, 1
mov al, 1
sbb al, 0xff
test al, 1
jne 0x411ba9
jmp 0x411bae
jmp 0x413cac
mov al, byte [esp + 0x1a8]
mov byte [esp + 0x1d8], al
mov byte [esp + 0x36], 5
mov byte [esp + 0x37], 0x71
movzx edx, byte [esp + 0x36]
mov ecx, edx
or ecx, 0x584d640f
or edx, 0xa7b29bf0
mov eax, ecx
add eax, 0xa7b29bf1
mov esi, edx
xor esi, 0xffffffff
or eax, esi
add ecx, 0xa7b29bf1
xor edx, 0xffffffff
or ecx, edx
and eax, ecx
mov ecx, eax
xor ecx, 0x7e
shl eax, 1
and eax, 0xfc
xor eax, 0xfc
sub eax, ecx
add al, 1
mov byte [esp + 0x36], al
movzx edx, byte [esp + 0x37]
mov ecx, edx
or ecx, 0x584d640e
or edx, 0xa7b29bf1
add ecx, 1
mov eax, ecx
add eax, 0xa7b29bf1
mov esi, edx
xor esi, 0xffffffff
or eax, esi
add ecx, 0xa7b29bf1
xor edx, 0xffffffff
or ecx, edx
and eax, ecx
mov ecx, eax
xor ecx, 0x7e
shl eax, 1
and eax, 0xfc
xor eax, 0xfc
sub eax, ecx
add al, 1
mov byte [esp + 0x37], al
lea eax, [esp + 0x36]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00401860
mov esi, eax
mov al, byte [esp + 0x1a4]
mov byte [esp + 0x1dc], al
mov byte [esp + 0x7e], 0x45
mov byte [esp + 0x7f], 0x30
mov byte [esp + 0x80], 0xa5
xor eax, eax
cmp eax, 3
jae 0x411cba
movzx edx, byte [esp + eax + 0x7e]
mov ecx, eax
add ecx, 0xb4b3eb7b
xor ecx, edx
add ecx, 0x5a60a427
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0x7e], cl
add eax, 1
jmp 0x411c8b
lea eax, [esp + 0x7e]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00401960
fnstcw word [esp + 0x90]
movzx eax, word [esp + 0x90]
or eax, 0xc00
mov word [esp + 0x23e], ax
fldcw word [esp + 0x23e]
fistp dword [esp + 0x280]
fldcw word [esp + 0x90]
mov eax, dword [esp + 0x280]
mov dword [esp + 0x84], eax
mov al, byte [esp + 0x1a0]
mov byte [esp + 0x1e0], al
call fcn.00414120
call fcn.00414120
call fcn.00414120
call fcn.00414120
mov byte [esp + 0x34], 7
call fcn.00414120
call fcn.00414120
mov byte [esp + 0x35], 0x63
movzx ecx, byte [esp + 0x34]
mov eax, ecx
xor eax, 0xcf35cef2
lea ecx, [ecx + ecx - 2]
and ecx, 2
sub eax, ecx
add eax, 0x86518870
mov edx, eax
and edx, ecx
xor eax, ecx
lea eax, [eax + edx*2]
mov byte [esp + 0x34], al
movzx eax, byte [esp + 0x35]
xor eax, 0xcf35cef3
lea ecx, [eax + eax - 2]
and ecx, 2
sub eax, ecx
add eax, 0x86518870
mov edx, eax
and edx, ecx
xor eax, ecx
lea eax, [eax + edx*2]
mov byte [esp + 0x35], al
lea eax, [esp + 0x34]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00401960
fnstcw word [esp + 0x8e]
movzx eax, word [esp + 0x8e]
or eax, 0xc00
mov word [esp + 0x23c], ax
fldcw word [esp + 0x23c]
fistp dword [esp + 0x284]
fldcw word [esp + 0x8e]
mov edi, dword [esp + 0x284]
lea eax, [esp + 0x3dc]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0x400
mov dword [esp + 8], esi
mov dword [esp + 0xc], 0
call fcn.0040a910
lea eax, [esp + 0x3dc]
lea ecx, [esp + 0x64]
lea edx, [esp + 0x24c]
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 0x411e31
mov esi, dword [esp + 0x2c]
jmp 0x413cac
cmp edi, 0
sete al
mov byte [esp + 0x77], al
test al, 1
jne 0x411e44
jmp 0x41314a
mov al, byte [esp + 0x19c]
mov byte [esp + 0x1e4], al
mov byte [esp + 0x32], 0xc3
mov byte [esp + 0x33], 0x54
movzx eax, byte [esp + 0x32]
mov edx, eax
xor edx, 0xffffffff
or edx, 0xf4
mov ecx, edx
xor ecx, 0xffffffff
mov esi, edx
and esi, 2
and edx, 0xfd
xor edx, 0xfd
imul edx, esi
mov esi, ecx
and esi, 2
or ecx, 2
imul ecx, esi
add ecx, edx
add eax, 0xb
sub eax, ecx
add al, 0xa8
mov byte [esp + 0x32], al
movzx eax, byte [esp + 0x33]
mov edx, eax
xor edx, 0xffffffff
or edx, 0xf3
mov ecx, edx
xor ecx, 0xffffffff
mov esi, edx
and esi, 2
and edx, 0xfd
xor edx, 0xfd
imul edx, esi
mov esi, ecx
and esi, 2
or ecx, 2
imul ecx, esi
add ecx, edx
add eax, 0xc
sub eax, ecx
add al, 0xa8
mov byte [esp + 0x33], al
lea eax, [esp + 0x32]
mov ecx, dword [esp + 0xb8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401860
cmp eax, 0
setne cl
test cl, 1
mov esi, dword [esp + 0x2c]
jne 0x411f09
jmp 0x412110
mov dword [esp + 0x25c], eax
mov dword [esp], eax
call fcn.00413cd0
mov dword [esp + 0x240], eax
sub eax, 0xffffffff
mov ecx, 2
mov dword [esp + 0x254], eax
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411f3f
mov ecx, eax
mov dword [esp], ecx
call fcn.004082c0
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov eax, dword [esp + 0x254]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x25c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a910
xor eax, eax
lea eax, [esp + 0x198]
mov dword [esp], 0
mov dword [esp + 0x28], edi
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x240]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x444ab4]
sub esp, 0x18
mov cl, byte [esp + 0x194]
mov byte [esp + 0x1e8], cl
mov byte [esp + 0x48], 0xb
mov byte [esp + 0x49], 0x29
mov byte [esp + 0x4a], 0x2a
mov byte [esp + 0x4b], 0x6b
mov cl, byte [esp + 0x48]
xor cl, 0x68
add cl, 0xc0
mov byte [esp + 0x48], cl
mov cl, byte [esp + 0x49]
xor cl, 0x69
add cl, 0xc0
mov byte [esp + 0x49], cl
mov cl, byte [esp + 0x4a]
xor cl, 0x6a
add cl, 0xc0
mov byte [esp + 0x4a], cl
mov cl, byte [esp + 0x4b]
xor cl, 0x6b
add cl, 0xc0
mov byte [esp + 0x4b], cl
cmp eax, dword [esp + 0x48]
sete al
test al, 1
jne 0x412018
jmp 0x41203c
jmp 0x41201a
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.004082d0
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call fcn.00435c10
mov eax, 4
jmp 0x4120fc
mov eax, dword [esp + 0x198]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412059
mov ecx, eax
mov dword [esp], ecx
call fcn.004082c0
mov ecx, dword [0x444ab4]
mov dword [esp + 0x250], ecx
mov ecx, dword [esp + 0x198]
xor edx, edx
lea edx, [esp + 0x198]
mov dword [esp], 0
mov edi, dword [esp + 0x28]
mov dword [esp + 4], edi
mov edi, dword [esp + 0x240]
mov dword [esp + 8], edi
mov edi, eax
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call dword [esp + 0x250]
sub esp, 0x18
cmp eax, 0
jge 0x4120e4
jmp 0x4120b7
mov dword [esp], edi
call fcn.004082d0
jmp 0x4120c1
jmp 0x4120c3
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.004082d0
jmp 0x4120d1
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call fcn.00435c10
mov eax, 4
jmp 0x4120fa
jmp 0x4120e6
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.004082d0
xor eax, eax
mov dword [esp + 0x28], edi
jmp 0x4120fa
jmp 0x4120fc
cmp eax, 0
sete cl
test cl, 1
jne 0x412842
jmp 0x412844
call fcn.00408a60
and eax, 0xf
add eax, 0x10
xor edx, edx
lea ecx, [esp + 0x39c]
jmp 0x412126
cmp edx, eax
jb 0x41234b
mov word [ecx], 0
mov al, byte [esp + 0x18c]
mov byte [esp + 0x1f0], al
mov byte [esp + 0xbe], 0xa5
mov byte [esp + 0xbf], 0x81
mov byte [esp + 0xc0], 0xd6
mov byte [esp + 0xc1], 0x83
mov byte [esp + 0xc2], 0xc1
mov byte [esp + 0xc3], 0x85
mov byte [esp + 0xc4], 0xcb
mov byte [esp + 0xc5], 0x87
mov byte [esp + 0xc6], 0xd8
mov byte [esp + 0xc7], 0x89
mov byte [esp + 0xc8], 0xaf
mov byte [esp + 0xc9], 0x8b
mov byte [esp + 0xca], 0xd0
mov byte [esp + 0xcb], 0x8d
mov byte [esp + 0xcc], 0x8e
mov byte [esp + 0xcd], 0x8f
xor eax, eax
cmp eax, 0x10
jae 0x4121f2
movzx edx, byte [esp + eax + 0xbe]
mov esi, eax
xor esi, 0x80
mov ecx, eax
xor ecx, 0x7f
and ecx, edx
xor edx, 0xffffffff
and esi, edx
or ecx, esi
mov byte [esp + eax + 0xbe], cl
add eax, 1
jmp 0x4121c3
lea eax, [esp + 0x33c]
lea ecx, [esp + 0xbe]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00409c90
lea ecx, [esp + 0x39c]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00409c90
mov edi, eax
lea eax, [esp + 0x33c]
sub edi, eax
sar edi, 1
xor eax, eax
lea eax, [esp + 0x33c]
lea ecx, [esp + 0x188]
mov dword [esp], 0
mov dword [esp + 4], eax
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], ecx
call dword [0x444ab4]
sub esp, 0x18
mov cl, byte [esp + 0x184]
mov byte [esp + 0x1f4], cl
mov byte [esp + 0x40], 0x46
mov byte [esp + 0x41], 0xa6
mov byte [esp + 0x42], 0xa7
mov byte [esp + 0x43], 0xf8
movzx edx, byte [esp + 0x40]
mov ecx, edx
and ecx, 0xcd
or edx, 0x405334cd
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x2e
xor ecx, 0x97
add ecx, edx
add cl, 1
mov byte [esp + 0x40], cl
movzx edx, byte [esp + 0x41]
mov ecx, edx
and ecx, 0xce
or edx, 0x405334ce
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x2e
xor ecx, 0x97
add ecx, edx
add cl, 1
mov byte [esp + 0x41], cl
movzx edx, byte [esp + 0x42]
mov ecx, edx
and ecx, 0xcf
or edx, 0x405334cf
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x2e
xor ecx, 0x97
add ecx, edx
add cl, 1
mov byte [esp + 0x42], cl
movzx edx, byte [esp + 0x43]
mov ecx, edx
and ecx, 0xd0
or edx, 0x405334d0
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x2e
xor ecx, 0x97
add ecx, edx
add cl, 1
mov byte [esp + 0x43], cl
mov ecx, dword [esp + 0x40]
cmp eax, ecx
mov esi, dword [esp + 0x2c]
jne 0x4124f9
jmp 0x412517
mov dword [esp + 0x27c], eax
mov dword [esp + 0x278], edx
mov dword [esp + 0x270], ecx
call fcn.00408a60
mov cl, byte [esp + 0x190]
mov byte [esp + 0x1ec], cl
mov byte [esp + 0x44], 0x23
mov byte [esp + 0x45], 0xb8
mov byte [esp + 0x46], 0xb9
mov byte [esp + 0x47], 0xba
movzx edx, byte [esp + 0x44]
mov ecx, edx
xor ecx, 0x12b27b8d
xor ecx, 0x92146cb2
mov esi, edx
and esi, 0x3f
or ecx, esi
and edx, 0x80a6173f
sub ecx, edx
mov edx, ecx
and edx, 5
mov esi, ecx
and esi, 5
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, 7
add ecx, edx
add cl, 1
mov byte [esp + 0x44], cl
movzx edx, byte [esp + 0x45]
mov ecx, edx
xor ecx, 0x12b27bf2
xor ecx, 0x92146cb2
mov esi, edx
and esi, 0x40
or ecx, esi
and edx, 0x80a61740
sub ecx, edx
mov edx, ecx
and edx, 5
mov esi, ecx
and esi, 5
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, 7
add ecx, edx
add cl, 1
mov byte [esp + 0x45], cl
movzx edx, byte [esp + 0x46]
mov ecx, edx
xor ecx, 0x12b27bf3
xor ecx, 0x92146cb2
mov esi, edx
and esi, 0x41
or ecx, esi
and edx, 0x80a61741
sub ecx, edx
mov edx, ecx
and edx, 5
mov esi, ecx
and esi, 5
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, 7
add ecx, edx
add cl, 1
mov byte [esp + 0x46], cl
movzx edx, byte [esp + 0x47]
mov ecx, edx
xor ecx, 0x12b27bf0
xor ecx, 0x92146cb2
mov esi, edx
and esi, 0x42
or ecx, esi
and edx, 0x80a61742
sub ecx, edx
mov edx, ecx
and edx, 5
mov esi, ecx
and esi, 5
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, 7
add ecx, edx
add cl, 1
mov byte [esp + 0x47], cl
cdq
idiv dword [esp + 0x44]
movsx eax, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov edx, dword [esp + 0x278]
mov esi, dword [esp + 0x270]
mov ecx, esi
add ecx, 2
mov word [esi], ax
mov eax, dword [esp + 0x27c]
add edx, 1
jmp 0x412126
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call fcn.00435c10
mov dword [esp + 0x28], 0
mov eax, 4
jmp 0x41283d
mov eax, dword [esp + 0x188]
mov ecx, eax
and ecx, 4
or eax, 4
add eax, ecx
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41253e
mov ecx, eax
mov dword [esp], ecx
call fcn.004082c0
mov esi, dword [0x444ab4]
mov ecx, dword [esp + 0x188]
xor edx, edx
lea edx, [esp + 0x33c]
mov dword [esp], 0
mov dword [esp + 4], edx
mov dword [esp + 8], edi
mov dword [esp + 0x28], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [esp + 0x188]
mov dword [esp + 0x14], eax
call esi
sub esp, 0x18
cmp eax, 0
jge 0x4125b4
mov esi, dword [esp + 0x2c]
jmp 0x412592
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.004082d0
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call fcn.00435c10
mov eax, 4
jmp 0x41283d
mov ecx, dword [esp + 0x84]
cmp ecx, 0
sete al
test al, 1
mov esi, dword [esp + 0x2c]
jne 0x4125ce
jmp 0x41267f
mov al, byte [esp + 0x180]
mov byte [esp + 0x1f8], al
mov byte [esp + 0xae], 0x1c
mov byte [esp + 0xaf], 0x33
mov byte [esp + 0xb0], 0x51
mov byte [esp + 0xb1], 0x35
mov byte [esp + 0xb2], 0xae
mov byte [esp + 0xb3], 0x37
mov byte [esp + 0xb4], 0x5d
mov byte [esp + 0xb5], 0x39
mov byte [esp + 0xb6], 0x3a
mov byte [esp + 0xb7], 0x3b
xor eax, eax
cmp eax, 0xa
jae 0x412663
movzx edx, byte [esp + eax + 0xae]
mov ecx, eax
add ecx, 0x81b5ff22
xor ecx, edx
add ecx, 0xf25006ef
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esp + eax + 0xae], cl
add eax, 1
jmp 0x41262e
lea eax, [esp + 0xae]
mov ecx, dword [esp + 0x28]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004140a0
jmp 0x412839
cmp ecx, 1
jne 0x412766
mov al, byte [esp + 0x17c]
mov byte [esp + 0x1fc], al
mov byte [esp + 0xa4], 0x73
mov byte [esp + 0xa5], 0xe
mov byte [esp + 0xa6], 0xab
mov byte [esp + 0xa7], 0
mov byte [esp + 0xa8], 0xbd
mov byte [esp + 0xa9], 2
mov byte [esp + 0xaa], 0xbf
mov byte [esp + 0xab], 4
mov byte [esp + 0xac], 5
mov byte [esp + 0xad], 6
xor eax, eax
cmp eax, 0xa
jae 0x412746
movzx edx, byte [esp + eax + 0xa4]
mov ecx, 0x668ef5da
sub ecx, eax
or ecx, edx
mov edi, eax
add edi, 0x99710a25
mov esi, eax
add esi, 0x99710a25
or edi, esi
mov esi, edx
shl esi, 1
xor esi, 0xffffffff
add esi, edx
xor edx, 0xffffffff
and esi, edx
or edi, esi
add ecx, edi
add ecx, 2
mov edx, ecx
shl edx, 1
and edx, 0x52
xor ecx, 0xd6
add ecx, 1
sub ecx, edx
add cl, 1
mov byte [esp + eax + 0xa4], cl
add eax, 1
jmp 0x4126e8
lea eax, [esp + 0xa4]
mov ecx, dword [esp + 0x28]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004140a0
mov esi, dword [esp + 0x2c]
jmp 0x412839
cmp ecx, 2
sete al
jmp 0x41276e
test al, 1
jne 0x412777
jmp 0x412839
mov al, byte [esp + 0x178]
mov byte [esp + 0x200], al
mov byte [esp + 0x9a], 0x8e
mov byte [esp + 0x9b], 0xa1
mov byte [esp + 0x9c], 0xd2
mov byte [esp + 0x9d], 0xa3
mov byte [esp + 0x9e], 0xd7
mov byte [esp + 0x9f], 0xa5
mov byte [esp + 0xa0], 0x97
mov byte [esp + 0xa1], 0xa7
mov byte [esp + 0xa2], 0xa8
mov byte [esp + 0xa3], 0xa9
xor eax, eax
cmp eax, 0xa
jae 0x412822
movzx edx, byte [esp + eax + 0x9a]
mov ecx, eax
add ecx, 0x33937ca0
mov esi, 0x5f
sub esi, eax
and esi, edx
xor ecx, edx
add ecx, edx
sub ecx, esi
mov esi, eax
add esi, 0xa0
and esi, edx
mov edx, ecx
xor edx, esi
xor esi, 0xffffffff
and ecx, esi
mov esi, dword [esp + 0x2c]
shl ecx, 1
sub ecx, edx
mov byte [esp + eax + 0x9a], cl
add eax, 1
jmp 0x4127d7
lea eax, [esp + 0x9a]
mov ecx, dword [esp + 0x28]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004140a0
xor eax, eax
jmp 0x41283d
cmp eax, 0
jne 0x412844
xor eax, eax
cmp eax, 0
jne 0x413cac
lea eax, [esp + 0x248]
xor ecx, ecx
mov ecx, dword [esp + 0x28]
mov dword [esp], ecx
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.00438b00
mov edx, eax
cmp edx, 0
jl 0x4129f1
mov eax, dword [esp + 0x24c]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x248]
xor esi, esi
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.004390b0
mov edx, eax
mov eax, dword [esp + 0x248]
mov dword [esp + 0x258], eax
mov al, byte [esp + 0x1c8]
mov byte [esp + 0x228], al
mov byte [esp + 0x5c], 0x2d
mov byte [esp + 0x5d], 0x2c
mov byte [esp + 0x5e], 0x2b
mov byte [esp + 0x5f], 0x2a
movzx eax, byte [esp + 0x5c]
mov ecx, eax
or ecx, 0x22
xor eax, 0xffffffff
or eax, 0xdd
and eax, ecx
add al, 0xf0
mov byte [esp + 0x5c], al
movzx eax, byte [esp + 0x5d]
mov ecx, eax
or ecx, 0x23
xor eax, 0xffffffff
or eax, 0xdc
and eax, ecx
add al, 0xf0
mov byte [esp + 0x5d], al
movzx eax, byte [esp + 0x5e]
mov ecx, eax
or ecx, 0x24
xor eax, 0xffffffff
or eax, 0xdb
and eax, ecx
add al, 0xf0
mov byte [esp + 0x5e], al
movzx eax, byte [esp + 0x5f]
mov ecx, eax
or ecx, 0x25
xor eax, 0xffffffff
or eax, 0xda
and eax, ecx
add al, 0xf0
mov byte [esp + 0x5f], al
mov esi, dword [esp + 0x5c]
xor edi, edi
cmp edi, dword [0x444ab8]
jb 0x412973
mov esi, dword [esp + 0x2c]
jmp 0x4129ef
mov eax, dword [0x444abc]
cmp dword [eax + edi*8], 0xb430e561
sete cl
mov byte [esp + 0x73], cl
test cl, 1
jne 0x41298d
jmp 0x4129da
mov eax, dword [eax + edi*8 + 4]
cmp eax, esi
je 0x4129da
mov dword [esp + 0x268], esi
mov ecx, dword [0x444ac0]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esp + 0x258]
mov dword [esp + 0xc], eax
mov dword [esp + 0x260], edi
mov edi, edx
call fcn.00436ff0
mov esi, dword [esp + 0x268]
mov edx, edi
mov edi, dword [esp + 0x260]
test byte [esp + 0x73], 1
je 0x4129e7
mov esi, dword [esp + 0x2c]
jmp 0x4129ef
add edi, 1
jmp 0x412965
jmp 0x4129f1
mov eax, dword [esp + 0x64]
mov dword [esp], eax
mov edi, edx
call fcn.00435c10
mov dword [esp + 0x64], 0
cmp edi, 0
jge 0x412a25
mov dword [esp + 0x68], 0
mov eax, 4
mov ecx, dword [esp + 0x84]
jmp 0x413137
mov ecx, dword [esp + 0x84]
cmp ecx, 1
jne 0x412d97
mov al, byte [esp + 0x174]
mov byte [esp + 0x204], al
mov byte [esp + 0x7b], 0xc6
mov byte [esp + 0x7c], 0xcf
mov byte [esp + 0x7d], 0xa2
xor eax, eax
cmp eax, 3
jae 0x412a7b
mov cl, byte [esp + eax + 0x7b]
mov dl, al
add dl, 0xa0
xor dl, cl
mov byte [esp + eax + 0x7b], dl
mov ecx, eax
xor ecx, 0xfffffffe
mov edx, eax
or edx, 1
and edx, ecx
or eax, 1
add eax, edx
jmp 0x412a54
lea eax, [esp + 0x7b]
mov ecx, dword [esp + 0xb8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401860
mov dword [esp + 0x158], eax
mov al, byte [esp + 0x170]
mov byte [esp + 0x208], al
mov byte [esp + 0x78], 0x9d
mov byte [esp + 0x79], 0x8f
mov byte [esp + 0x7a], 0x3e
xor eax, eax
cmp eax, 3
jae 0x412ad4
mov cl, byte [esp + eax + 0x78]
mov dl, al
add dl, 0xdc
xor dl, cl
add dl, 0x20
mov byte [esp + eax + 0x78], dl
add eax, 1
jmp 0x412ab8
lea eax, [esp + 0x78]
mov ecx, dword [esp + 0xb8]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401860
mov dword [esp + 0x154], eax
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.004140f0
mov ebx, eax
cmp dword [esp + 0x158], 0
setne al
mov dword [esp + 0x150], 0
mov byte [esp + 0x75], al
test al, 1
jne 0x412b20
jmp 0x412b41
mov eax, dword [esp + 0x158]
mov dword [esp], eax
call fcn.004084e0
xor ecx, ecx
sub ecx, eax
add ecx, 0xffffffff
xor eax, eax
sub eax, ecx
mov dword [esp + 0x150], eax
cmp dword [esp + 0x154], 0
setne al
xor ecx, ecx
mov byte [esp + 0x76], al
test al, 1
jne 0x412b58
jmp 0x412b6c
mov eax, dword [esp + 0x154]
mov dword [esp], eax
call fcn.004084e0
mov ecx, eax
add ecx, 1
mov eax, ebx
and eax, 9
or ebx, 9
add eax, ebx
add eax, 0x1030cbde
add eax, dword [esp + 0x150]
sub eax, 0x1030cbde
mov dword [esp + 0x274], ecx
add eax, ecx
sub eax, 0xffffffff
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412ba9
mov ecx, eax
mov dword [esp], ecx
call fcn.004082c0
mov dword [esp + 0x68], eax
mov al, byte [esp + 0x16c]
mov byte [esp + 0x20c], al
mov byte [esp + 0xce], 0xe5
mov byte [esp + 0xcf], 0x68
mov byte [esp + 0xd0], 0xfc
mov byte [esp + 0xd1], 0x6a
mov byte [esp + 0xd2], 0xf5
mov byte [esp + 0xd3], 0x6c
mov byte [esp + 0xd4], 0xc9
mov byte [esp + 0xd5], 0x6e
mov byte [esp + 0xd6], 0xf3
mov byte [esp + 0xd7], 0x60
mov byte [esp + 0xd8], 0xfd
mov byte [esp + 0xd9], 0x62
mov byte [esp + 0xda], 0xb0
mov byte [esp + 0xdb], 0x64
mov byte [esp + 0xdc], 0xb7
mov byte [esp + 0xdd], 0x66
mov byte [esp + 0xde], 0x67
mov byte [esp + 0xdf], 0x58
xor eax, eax
mov ebx, dword [esp + 0x28]
cmp eax, 0x12
jae 0x412ca2
mov dl, byte [esp + eax + 0xce]
mov ecx, eax
and ecx, 0xf
mov edi, eax
and edi, 0xf0
xor edi, 0xf0
mov esi, eax
and esi, 0xf0
xor esi, 0xf0
or edi, esi
mov esi, dword [esp + 0x2c]
xor edi, 0xffffffff
add ecx, edi
xor cl, dl
add cl, 0x88
mov byte [esp + eax + 0xce], cl
add eax, 1
jmp 0x412c59
lea eax, [esp + 0xce]
mov ecx, dword [esp + 0x68]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00409c90
mov ecx, eax
add ecx, 2
mov word [eax], 0x20
add ecx, 2
mov word [eax + 2], 0x22
mov dword [esp], ecx
mov edi, dword [esp + 0x28]
mov dword [esp + 4], edi
call fcn.00409c90
mov ecx, edi
mov edi, eax
add edi, 2
mov word [eax], 0x22
cmp ecx, 0
sete al
test al, 1
jne 0x412cfc
jmp 0x412cf4
mov dword [esp], ebx
call fcn.004082d0
test byte [esp + 0x75], 1
jne 0x412d0c
mov ebx, dword [esp + 0x88]
jmp 0x412d4b
mov ebx, edi
add ebx, 2
mov word [edi], 0x2c
xor eax, eax
mov dword [esp], ebx
mov eax, dword [esp + 0x150]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x158]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a910
shl eax, 1
add ebx, eax
mov edi, ebx
mov ebx, dword [esp + 0x88]
test byte [esp + 0x76], 1
jne 0x412d54
jmp 0x412d88
mov eax, edi
add eax, 2
mov word [edi], 0x2c
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x274]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x154]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040a910
jmp 0x412d88
mov dword [esp + 0x28], 0
xor ecx, ecx
jmp 0x413135
mov dword [esp + 0x68], 0
cmp ecx, 2
je 0x412da9
jmp 0x413135
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.004140f0
mov ecx, eax
xor ecx, 0xffffffff
sub ecx, 0xffffffff
mov eax, 0x1d
sub eax, ecx
add eax, 1
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x412ddd
mov ecx, eax
mov dword [esp], ecx
call fcn.004082c0
mov dword [esp + 0x68], eax
mov al, byte [esp + 0x168]
mov byte [esp + 0x210], al
mov byte [esp + 0x3c], 0xf7
mov byte [esp + 0x3d], 0x16
mov byte [esp + 0x3e], 0x17
mov byte [esp + 0x3f], 0xe8
movzx eax, byte [esp + 0x3c]
mov ecx, eax
or ecx, 0xae763202
and eax, 2
xor ecx, 0xffffffff
or eax, ecx
mov edx, eax
add edx, 0x73b19017
mov ecx, edx
and ecx, 1
and edx, 1
xor edx, 0xffffffff
add eax, 0x19
add eax, edx
add ecx, eax
mov byte [esp + 0x3c], cl
movzx eax, byte [esp + 0x3d]
mov ecx, eax
or ecx, 0xae763201
and eax, 1
xor ecx, 0xffffffff
or eax, ecx
mov edx, eax
add edx, 0x73b19017
mov ecx, edx
and ecx, 1
and edx, 1
xor edx, 0xffffffff
add eax, 0x19
add eax, edx
add ecx, eax
mov byte [esp + 0x3d], cl
movzx eax, byte [esp + 0x3e]
or eax, 0xae763200
xor eax, 0xffffffff
mov edx, eax
add edx, 0x73b19017
mov ecx, edx
and ecx, 1
and edx, 1
xor edx, 0xffffffff
add eax, 0x19
add eax, edx
add ecx, eax
mov byte [esp + 0x3e], cl
movzx eax, byte [esp + 0x3f]
mov ecx, eax
or ecx, 0xae7631ff
xor ecx, 0xffffffff
or eax, ecx
mov edx, eax
add edx, 0x73b19017
mov ecx, edx
and ecx, 1
and edx, 1
xor edx, 0xffffffff
add eax, 0x19
add eax, edx
add ecx, eax
mov byte [esp + 0x3f], cl
mov al, byte [esp + 0x164]
mov byte [esp + 0x214], al
mov byte [esp + 0x112], 0x52
mov byte [esp + 0x113], 0xc3
mov byte [esp + 0x114], 0xab
mov byte [esp + 0x115], 0xc5
mov byte [esp + 0x116], 0x51
mov byte [esp + 0x117], 0xc7
mov byte [esp + 0x118], 0xad
mov byte [esp + 0x119], 0xc9
mov byte [esp + 0x11a], 0x58
mov byte [esp + 0x11b], 0xcb
mov byte [esp + 0x11c], 0x5f
mov byte [esp + 0x11d], 0xcd
mov byte [esp + 0x11e], 0xa6
mov byte [esp + 0x11f], 0xcf
mov byte [esp + 0x120], 0x95
mov byte [esp + 0x121], 0xf1
mov byte [esp + 0x122], 0x9e
mov byte [esp + 0x123], 0xf3
mov byte [esp + 0x124], 0x98
mov byte [esp + 0x125], 0xf5
mov byte [esp + 0x126], 0xd6
mov byte [esp + 0x127], 0xf7
mov byte [esp + 0x128], 0xd5
mov byte [esp + 0x129], 0xf9
mov byte [esp + 0x12a], 0x9f
mov byte [esp + 0x12b], 0xfb
mov byte [esp + 0x12c], 0x64
mov byte [esp + 0x12d], 0xfd
mov byte [esp + 0x12e], 0x9b
mov byte [esp + 0x12f], 0xff
mov byte [esp + 0x130], 0x83
mov byte [esp + 0x131], 0xe1
mov byte [esp + 0x132], 0xc2
mov byte [esp + 0x133], 0xe3
mov byte [esp + 0x134], 0x86
mov byte [esp + 0x135], 0xe5
mov byte [esp + 0x136], 0x7f
mov byte [esp + 0x137], 0xe7
mov byte [esp + 0x138], pe_nt_image_headers32
mov byte [esp + 0x139], 0xe9
mov byte [esp + 0x13a], 0x8b
mov byte [esp + 0x13b], 0xeb
mov byte [esp + 0x13c], 0x7f
mov byte [esp + 0x13d], 0xed
mov byte [esp + 0x13e], 0x7d
mov byte [esp + 0x13f], 0xef
mov byte [esp + 0x140], 0x30
mov byte [esp + 0x141], 0x11
mov byte [esp + 0x142], 0x3f
mov byte [esp + 0x143], 0x13
mov byte [esp + 0x144], 0x72
mov byte [esp + 0x145], 0x15
mov byte [esp + 0x146], 0x36
mov byte [esp + 0x147], 0x17
mov byte [esp + 0x148], 0x3a
mov byte [esp + 0x149], 0x19
mov byte [esp + 0x14a], 0x1a
mov byte [esp + 0x14b], 0x1b
xor eax, eax
cmp eax, 0x3a
jae 0x4130f9
movzx edx, byte [esp + eax + 0x112]
mov ecx, eax
add ecx, 0x64cb3f52
xor ecx, edx
add ecx, 0x469b9c25
mov edx, ecx
xor edx, 0xb5
shl ecx, 1
and ecx, 0x94
sub ecx, edx
mov byte [esp + eax + 0x112], cl
mov ecx, eax
and ecx, 0x1a
xor ecx, 0xc30984da
and eax, 0x25
sub eax, ecx
add eax, 0xc30984db
jmp 0x4130ac
lea eax, [esp + 0x112]
mov ecx, dword [esp + 0x68]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00409c90
mov dword [esp], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 4], eax
call fcn.00409c90
lea ecx, [esp + 0x3c]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00409c90
mov ecx, 2
xor eax, eax
cmp eax, 0
sete al
test al, 1
jne 0x41345e
jmp 0x413cac
xor edi, 1
mov ecx, dword [esp + 0x84]
mov eax, ecx
xor eax, 2
or edi, eax
sete al
test al, 1
jne 0x41317b
mov dword [esp + 0x68], 0
mov dword [esp + 0x28], 0
mov esi, dword [esp + 0x2c]
jmp 0x41345e
mov esi, ebx
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call fcn.00413cd0
mov ebx, eax
sub ebx, 0xc5b10195
add ebx, 1
add ebx, 0xc5b10195
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4131b2
mov ecx, eax
mov dword [esp], ecx
call fcn.004082c0
mov edx, dword [esp + 0x64]
xor ecx, ecx
mov dword [esp + 0x26c], eax
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edx
mov dword [esp + 0xc], 0
call fcn.0040a910
mov eax, dword [esp + 0x24c]
xor eax, 0xffffffff
sub eax, 0xffffffff
mov ecx, 0x18
sub ecx, eax
mov eax, ecx
and eax, 1
or ecx, 1
add eax, ecx
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x413213
mov ecx, eax
mov dword [esp], ecx
call fcn.004082c0
mov cl, byte [esp + 0x160]
mov byte [esp + 0x218], cl
mov byte [esp + 0xe0], 0x14
mov byte [esp + 0xe1], 0xa5
mov byte [esp + 0xe2], 9
mov byte [esp + 0xe3], 0xa7
mov byte [esp + 0xe4], 0x1f
mov byte [esp + 0xe5], 0xa9
mov byte [esp + 0xe6], 0xf
mov byte [esp + 0xe7], 0xab
mov byte [esp + 0xe8], 0x1e
mov byte [esp + 0xe9], 0xad
mov byte [esp + 0xea], 0x1d
mov byte [esp + 0xeb], 0xaf
mov byte [esp + 0xec], 0x18
mov byte [esp + 0xed], 0xb1
mov byte [esp + 0xee], 0x17
mov byte [esp + 0xef], 0xb3
mov byte [esp + 0xf0], 0x18
mov byte [esp + 0xf1], 0xb5
mov byte [esp + 0xf2], 0x1a
mov byte [esp + 0xf3], 0xb7
mov byte [esp + 0xf4], 0xd8
mov byte [esp + 0xf5], 0xb9
mov byte [esp + 0xf6], 0xd7
mov byte [esp + 0xf7], 0xbb
mov byte [esp + 0xf8], 0x19
mov byte [esp + 0xf9], 0xbd
mov byte [esp + 0xfa], 6
mov byte [esp + 0xfb], 0xbf
mov byte [esp + 0xfc], 0x25
mov byte [esp + 0xfd], 0x81
mov byte [esp + 0xfe], 0x21
mov byte [esp + 0xff], 0x83
mov byte [esp + 0x100], 0xe4
mov byte [esp + 0x101], 0x85
mov byte [esp + 0x102], 0x24
mov byte [esp + 0x103], 0x87
mov byte [esp + 0x104], 0x31
mov byte [esp + 0x105], 0x89
mov byte [esp + 0x106], 0x3a
mov byte [esp + 0x107], 0x8b
mov byte [esp + 0x108], 0x2d
mov byte [esp + 0x109], 0x8d
mov byte [esp + 0x10a], 0x3d
mov byte [esp + 0x10b], 0x8f
mov byte [esp + 0x10c], 0x23
mov byte [esp + 0x10d], 0x91
mov byte [esp + 0x10e], 0xf2
mov byte [esp + 0x10f], 0x93
mov byte [esp + 0x110], 0x94
mov byte [esp + 0x111], 0x95
xor edi, edi
mov ebx, esi
cmp edi, 0x32
jae 0x413417
movzx edx, byte [esp + edi + 0xe0]
mov ecx, edi
add ecx, 0x5dd02b84
and ecx, 0x65bd6902
mov esi, edi
add esi, 0x5dd02b84
and esi, 0x9a4296fd
or ecx, esi
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 2
xor edx, 2
mov esi, 0x20
sub esi, ecx
and esi, 0xfe
or ecx, 0xfe
xor esi, ecx
add edx, esi
mov byte [esp + edi + 0xe0], dl
add edi, 1
jmp 0x4133bd
lea ecx, [esp + 0xe0]
mov dword [esp + 0x68], eax
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00409c90
mov dword [esp], eax
mov edi, dword [esp + 0x26c]
mov dword [esp + 4], edi
call fcn.00409c90
mov esi, dword [esp + 0x2c]
mov dword [esp], edi
call fcn.004082d0
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x28], 0
jmp 0x41345e
test ecx, ecx
je 0x41347f
jmp 0x413464
mov eax, ecx
sub eax, 1
je 0x413651
jmp 0x413471
sub ecx, 2
je 0x4139c7
jmp 0x413c76
test byte [esp + 0x77], 1
jne 0x41348b
jmp 0x413651
lea eax, [esp + 0x2f8]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], 0x44
call fcn.00408450
mov dword [esp + 0x2f8], 0x44
mov eax, dword [0x443aac]
mov dword [esp], eax
mov dword [esp + 4], 0x755f867b
call fcn.004385c0
cmp eax, 0
setne cl
test cl, 1
jne 0x4134d9
jmp 0x4134d9
test cl, 1
jne 0x4134e0
xor eax, eax
xor ecx, ecx
lea ecx, [esp + 0x2f8]
lea edx, [esp + 0x2a4]
mov edi, dword [esp + 0x28]
mov dword [esp], edi
mov edi, dword [esp + 0x68]
mov dword [esp + 4], edi
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], ecx
mov dword [esp + 0x24], edx
call eax
sub esp, 0x28
cmp eax, 0
je 0x41364c
mov esi, ebx
mov edi, dword [esp + 0x2a4]
mov al, byte [esp + 0x1c4]
mov byte [esp + 0x22c], al
mov byte [esp + 0x58], 0x2d
mov byte [esp + 0x59], 0x2c
mov byte [esp + 0x5a], 0x2b
mov byte [esp + 0x5b], 0x2a
movzx eax, byte [esp + 0x58]
mov ecx, eax
or ecx, 0x22
xor eax, 0xffffffff
or eax, 0xdd
and eax, ecx
add al, 0xf0
mov byte [esp + 0x58], al
movzx eax, byte [esp + 0x59]
mov ecx, eax
or ecx, 0x23
xor eax, 0xffffffff
or eax, 0xdc
and eax, ecx
add al, 0xf0
mov byte [esp + 0x59], al
movzx eax, byte [esp + 0x5a]
mov ecx, eax
or ecx, 0x24
xor eax, 0xffffffff
or eax, 0xdb
and eax, ecx
add al, 0xf0
mov byte [esp + 0x5a], al
movzx eax, byte [esp + 0x5b]
mov ecx, eax
or ecx, 0x25
xor eax, 0xffffffff
or eax, 0xda
and eax, ecx
add al, 0xf0
mov byte [esp + 0x5b], al
mov ecx, dword [esp + 0x58]
xor ebx, ebx
cmp ebx, dword [0x444ab8]
jb 0x4135e8
jmp 0x413644
mov eax, dword [0x444abc]
cmp dword [eax + ebx*8], 0xb430e561
sete dl
mov byte [esp + 0x6f], dl
test dl, 1
jne 0x413602
jmp 0x413636
mov eax, dword [eax + ebx*8 + 4]
cmp eax, ecx
je 0x413636
mov dword [esp + 0x264], ecx
mov ecx, dword [0x444ac0]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov dword [esp + 0xc], edi
call fcn.00436ff0
mov ecx, dword [esp + 0x264]
test byte [esp + 0x6f], 1
je 0x41363f
jmp 0x413644
add ebx, 1
jmp 0x4135de
mov ebx, esi
mov esi, dword [esp + 0x2c]
jmp 0x41364c
jmp 0x413c76
mov eax, dword [0x443aac]
mov dword [esp], eax
mov dword [esp + 4], 0x4e0c8565
call fcn.004385c0
cmp eax, 0
setne cl
test cl, 1
jne 0x413673
jmp 0x413673
test cl, 1
jne 0x41367a
xor eax, eax
mov ecx, dword [esp + 0x64]
xor edx, edx
lea edx, [0x420170]
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
cmp eax, 0
je 0x4139c2
mov dword [esp + 0x244], eax
mov al, byte [esp + 0x15c]
mov byte [esp + 0x21c], al
mov byte [esp + 0x92], 0x12
mov byte [esp + 0x93], 0xc9
mov byte [esp + 0x94], 0x48
mov byte [esp + 0x95], 0xe9
mov byte [esp + 0x96], 9
mov byte [esp + 0x97], 8
mov byte [esp + 0x98], 7
mov byte [esp + 0x99], 6
xor edx, edx
cmp edx, 8
jae 0x4137a8
movzx edi, byte [esp + edx + 0x92]
mov dword [esp + 0x14c], edx
mov edx, dword [esp + 0x14c]
add edx, 0x295d0502
mov ecx, edi
and ecx, 0x4a
xor ecx, 0x76d8a04a
mov eax, edi
add eax, 1
xor edi, 0xffffffff
or edi, 0x89275fb5
add edi, eax
mov eax, 0xd6a2fafd
sub eax, dword [esp + 0x14c]
mov esi, eax
xor esi, 0x89275fb5
or eax, 0x76d8a04a
mov ebx, eax
and ebx, esi
and edx, 0x89275fb5
or ecx, edi
and eax, esi
mov esi, ebx
xor esi, edx
mov edx, dword [esp + 0x14c]
add ebx, esi
mov esi, dword [esp + 0x2c]
sub ebx, eax
mov eax, ebx
and eax, ecx
shl eax, 1
sub ebx, eax
add ebx, ecx
add bl, 0xf0
mov byte [esp + edx + 0x92], bl
add edx, 1
jmp 0x413712
mov eax, dword [esp + 0x92]
mov ecx, dword [esp + 0x96]
mov dword [esp + 0x28c], ecx
mov dword [esp + 0x288], eax
mov al, byte [esp + 0x220]
mov byte [esp + 0x224], al
mov byte [esp + 0x60], 0x2d
mov byte [esp + 0x61], 0x2c
mov byte [esp + 0x62], 0x2b
mov byte [esp + 0x63], 0x2a
movzx eax, byte [esp + 0x60]
mov ecx, eax
or ecx, 0x22
xor eax, 0xffffffff
or eax, 0xdd
and eax, ecx
add al, 0xf0
mov byte [esp + 0x60], al
movzx eax, byte [esp + 0x61]
mov ecx, eax
or ecx, 0x23
xor eax, 0xffffffff
or eax, 0xdc
and eax, ecx
add al, 0xf0
mov byte [esp + 0x61], al
movzx eax, byte [esp + 0x62]
mov ecx, eax
or ecx, 0x24
xor eax, 0xffffffff
or eax, 0xdb
and eax, ecx
add al, 0xf0
mov byte [esp + 0x62], al
movzx eax, byte [esp + 0x63]
mov ecx, eax
or ecx, 0x25
xor eax, 0xffffffff
or eax, 0xda
and eax, ecx
add al, 0xf0
mov byte [esp + 0x63], al
mov edi, dword [esp + 0x60]
xor ebx, ebx
cmp ebx, dword [0x444ab8]
jb 0x41385e
jmp 0x4138ca
mov eax, dword [0x444abc]
cmp dword [eax + ebx*8], 0xa67d73aa
sete cl
test cl, 1
jne 0x413874
jmp 0x4138be
mov eax, dword [eax + ebx*8 + 4]
cmp eax, edi
je 0x4138be
mov byte [esp + 0x74], cl
mov ecx, dword [0x444ac0]
xor edx, edx
lea edx, [esp + 0x288]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 0xc
mov eax, dword [esp + 0x244]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], edx
call fcn.00436ff0
mov cl, byte [esp + 0x74]
test cl, 1
je 0x4138c5
jmp 0x4138ca
add ebx, 1
jmp 0x413854
mov al, byte [esp + 0x1c0]
mov byte [esp + 0x230], al
mov byte [esp + 0x54], 0x2d
mov byte [esp + 0x55], 0x2c
mov byte [esp + 0x56], 0x2b
mov byte [esp + 0x57], 0x2a
movzx eax, byte [esp + 0x54]
mov ecx, eax
or ecx, 0x22
xor eax, 0xffffffff
or eax, 0xdd
and eax, ecx
add al, 0xf0
mov byte [esp + 0x54], al
movzx eax, byte [esp + 0x55]
mov ecx, eax
or ecx, 0x23
xor eax, 0xffffffff
or eax, 0xdc
and eax, ecx
add al, 0xf0
mov byte [esp + 0x55], al
movzx eax, byte [esp + 0x56]
mov ecx, eax
or ecx, 0x24
xor eax, 0xffffffff
or eax, 0xdb
and eax, ecx
add al, 0xf0
mov byte [esp + 0x56], al
movzx eax, byte [esp + 0x57]
mov ecx, eax
or ecx, 0x25
xor eax, 0xffffffff
or eax, 0xda
and eax, ecx
add al, 0xf0
mov byte [esp + 0x57], al
mov edi, dword [esp + 0x54]
xor ebx, ebx
cmp ebx, dword [0x444ab8]
jb 0x413964
jmp 0x4139bb
mov eax, dword [0x444abc]
cmp dword [eax + ebx*8], 0xb430e561
sete cl
test cl, 1
jne 0x41397a
jmp 0x4139af
mov eax, dword [eax + ebx*8 + 4]
cmp eax, edi
je 0x4139af
mov byte [esp + 0x70], cl
mov ecx, dword [0x444ac0]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esp + 0x244]
mov dword [esp + 0xc], eax
call fcn.00436ff0
mov cl, byte [esp + 0x70]
test cl, 1
je 0x4139b6
jmp 0x4139bb
add ebx, 1
jmp 0x41395a
mov ebx, dword [esp + 0x88]
jmp 0x413c76
lea eax, [esp + 0x2b4]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], 0x44
call fcn.00408450
mov dword [esp + 0x2b4], 0x44
mov eax, dword [0x443aac]
mov dword [esp], eax
mov dword [esp + 4], 0x755f867b
call fcn.004385c0
cmp eax, 0
setne cl
test cl, 1
jne 0x413a15
jmp 0x413a15
test cl, 1
jne 0x413a1c
xor eax, eax
xor ecx, ecx
lea edi, [esp + 0x2b4]
lea edx, [esp + 0x294]
mov dword [esp], 0
mov ecx, dword [esp + 0x68]
mov dword [esp + 4], ecx
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], edi
mov dword [esp + 0x24], edx
call eax
sub esp, 0x28
cmp eax, 0
setne al
test al, 1
jne 0x413a87
jmp 0x413c74
mov edi, dword [esp + 0x298]
mov al, byte [esp + 0x1bc]
mov byte [esp + 0x234], al
mov byte [esp + 0x50], 0x2d
mov byte [esp + 0x51], 0x2c
mov byte [esp + 0x52], 0x2b
mov byte [esp + 0x53], 0x2a
movzx eax, byte [esp + 0x50]
mov ecx, eax
or ecx, 0x22
xor eax, 0xffffffff
or eax, 0xdd
and eax, ecx
add al, 0xf0
mov byte [esp + 0x50], al
movzx eax, byte [esp + 0x51]
mov ecx, eax
or ecx, 0x23
xor eax, 0xffffffff
or eax, 0xdc
and eax, ecx
add al, 0xf0
mov byte [esp + 0x51], al
movzx eax, byte [esp + 0x52]
mov ecx, eax
or ecx, 0x24
xor eax, 0xffffffff
or eax, 0xdb
and eax, ecx
add al, 0xf0
mov byte [esp + 0x52], al
movzx eax, byte [esp + 0x53]
mov ecx, eax
or ecx, 0x25
xor eax, 0xffffffff
or eax, 0xda
and eax, ecx
add al, 0xf0
mov byte [esp + 0x53], al
mov esi, dword [esp + 0x50]
xor ebx, ebx
cmp ebx, dword [0x444ab8]
jb 0x413b28
jmp 0x413b78
mov eax, dword [0x444abc]
cmp dword [eax + ebx*8], 0xb430e561
sete dl
test dl, 1
jne 0x413b3e
jmp 0x413b6c
mov eax, dword [eax + ebx*8 + 4]
cmp eax, esi
je 0x413b6c
mov ecx, dword [0x444ac0]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov dword [esp + 0xc], edi
mov byte [esp + 0x72], dl
call fcn.00436ff0
mov dl, byte [esp + 0x72]
test dl, 1
je 0x413b73
jmp 0x413b78
add ebx, 1
jmp 0x413b1e
mov edi, dword [esp + 0x294]
mov al, byte [esp + 0x1b8]
mov byte [esp + 0x238], al
mov byte [esp + 0x4c], 0x2d
mov byte [esp + 0x4d], 0x2c
mov byte [esp + 0x4e], 0x2b
mov byte [esp + 0x4f], 0x2a
movzx eax, byte [esp + 0x4c]
mov ecx, eax
or ecx, 0x22
xor eax, 0xffffffff
or eax, 0xdd
and eax, ecx
add al, 0xf0
mov byte [esp + 0x4c], al
movzx eax, byte [esp + 0x4d]
mov ecx, eax
or ecx, 0x23
xor eax, 0xffffffff
or eax, 0xdc
and eax, ecx
add al, 0xf0
mov byte [esp + 0x4d], al
movzx eax, byte [esp + 0x4e]
mov ecx, eax
or ecx, 0x24
xor eax, 0xffffffff
or eax, 0xdb
and eax, ecx
add al, 0xf0
mov byte [esp + 0x4e], al
movzx eax, byte [esp + 0x4f]
mov ecx, eax
or ecx, 0x25
xor eax, 0xffffffff
or eax, 0xda
and eax, ecx
add al, 0xf0
mov byte [esp + 0x4f], al
mov esi, dword [esp + 0x4c]
xor ebx, ebx
cmp ebx, dword [0x444ab8]
jb 0x413c19
jmp 0x413c69
mov eax, dword [0x444abc]
cmp dword [eax + ebx*8], 0xb430e561
sete cl
test cl, 1
jne 0x413c2f
jmp 0x413c5d
mov eax, dword [eax + ebx*8 + 4]
cmp eax, esi
je 0x413c5d
mov byte [esp + 0x71], cl
mov ecx, dword [0x444ac0]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov dword [esp + 0xc], edi
call fcn.00436ff0
mov cl, byte [esp + 0x71]
test cl, 1
je 0x413c64
jmp 0x413c69
add ebx, 1
jmp 0x413c0f
mov ebx, dword [esp + 0x88]
mov esi, dword [esp + 0x2c]
jmp 0x413c76
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call fcn.00435c10
cmp dword [esp + 0x28], 0
je 0x413c97
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.004082d0
jmp 0x413c97
mov eax, dword [esp + 0x68]
cmp eax, 0
je 0x413caa
mov dword [esp], eax
call fcn.004082d0
jmp 0x413caa
jmp 0x413cac
sub esi, 0xffffffff
jmp 0x4119ac
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret