Function at 0x410970
Capabilities:
Authenticate hmac
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, 0x810
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.004019a0
mov ebx, eax
cmp ebx, 0
jne 0x410998
xor eax, eax
jmp 0x412735
xor esi, esi
jmp 0x41099c
mov dword [esp], ebx
call fcn.00401b80
cmp esi, eax
jb 0x4109af
mov al, 1
jmp 0x412735
mov dword [esp], ebx
mov dword [esp + 4], esi
call fcn.00401b90
mov dword [esp + 0x38], eax
mov al, byte [esp + 0xc0]
mov byte [esp + 0x100], al
mov byte [esp + 0x270], 0x67
mov byte [esp + 0x271], 0x9b
mov eax, 2
mov byte [esp + eax + 0x270], 0
add eax, 1
cmp eax, 8
jne 0x4109e2
xor eax, eax
cmp eax, 8
jae 0x410a35
movzx edi, byte [esp + eax + 0x270]
mov edx, 0x4be28ca4
sub edx, eax
or edx, edi
mov ecx, 0xa4
sub ecx, eax
and ecx, edi
xor edx, 0xffffffff
or ecx, edx
mov edx, ecx
and edx, 1
mov edi, 0xc7
sub edi, ecx
or edi, 1
sub edx, edi
mov byte [esp + eax + 0x270], dl
add eax, 1
jmp 0x4109f4
lea eax, [esp + 0x270]
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 2
call fcn.00401b20
cmp eax, 0
je 0x410ba1
mov al, byte [esp + 0xbc]
mov byte [esp + 0x104], al
mov byte [esp + 0x244], 0xae
mov byte [esp + 0x245], 0xbd
mov byte [esp + 0x246], 0x32
mov eax, 3
mov byte [esp + eax + 0x244], 0
add eax, 1
cmp eax, 8
jne 0x410a88
xor eax, eax
cmp eax, 8
jae 0x410ada
mov dl, byte [esp + eax + 0x244]
mov edi, eax
add edi, 0xc
mov ecx, 0x73
sub ecx, eax
and ecx, 0xa1
and edi, 0x5e
or ecx, edi
xor cl, dl
xor cl, 0xa1
add cl, 0x44
mov byte [esp + eax + 0x244], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x410a9a
lea eax, [esp + 0x244]
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401b20
cmp eax, 0
setne al
test al, 1
jne 0x410b08
jmp 0x410ba1
mov al, byte [esp + 0xb8]
mov byte [esp + 0x108], al
mov byte [esp + 0x268], 0x25
mov byte [esp + 0x269], 0x81
mov eax, 2
mov byte [esp + eax + 0x268], 0
add eax, 1
cmp eax, 6
jne 0x410b2b
xor eax, eax
cmp eax, 6
jae 0x410b6e
movzx edx, byte [esp + eax + 0x268]
mov ecx, eax
add ecx, 0x60
mov edi, 0x9f
sub edi, eax
and edi, edx
xor edx, 0xffffffff
and ecx, edx
or ecx, edi
add cl, 0x20
mov byte [esp + eax + 0x268], cl
add eax, 1
jmp 0x410b3d
lea eax, [esp + 0x268]
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 3
call fcn.00401b20
cmp eax, 0
setne al
xor al, 0xff
and al, 1
or al, 0
xor al, 0
test al, 1
jne 0x410ba7
jmp 0x410bac
jmp 0x410ba3
jmp 0x410ba5
jmp 0x410ba7
jmp 0x41272d
mov al, byte [esp + 0xb4]
mov byte [esp + 0x10c], al
mov byte [esp + 0x48], 0x15
mov byte [esp + 0x49], 0x89
mov eax, 2
mov byte [esp + eax + 0x48], 0
add eax, 1
cmp eax, 4
jne 0x410bc9
mov dword [esp + 0x28], ebx
xor eax, eax
mov dword [esp + 0x34], esi
cmp eax, 4
jae 0x410c3d
movzx ebx, byte [esp + eax + 0x48]
mov ecx, eax
add ecx, 0xddc569de
mov edx, ecx
and edx, ebx
mov esi, edx
and esi, 0xfd
mov edi, edx
and edi, 2
xor edi, 2
imul edi, esi
mov esi, edx
and esi, 2
or edx, 2
imul edx, esi
add edx, edi
mov esi, ecx
and esi, ebx
shl esi, 1
xor ecx, ebx
add ecx, esi
add ecx, 0xae
sub ecx, edx
add cl, 0xfc
mov byte [esp + eax + 0x48], cl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x410be0
lea eax, [esp + 0x48]
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov edi, eax
mov al, byte [esp + 0xb0]
mov byte [esp + 0x110], al
mov byte [esp + 0x23c], 0x3e
mov byte [esp + 0x23d], 0xd
mov byte [esp + 0x23e], 0x92
mov eax, 3
mov byte [esp + eax + 0x23c], 0
add eax, 1
cmp eax, 6
jne 0x410c7e
xor eax, eax
cmp eax, 6
jae 0x410cc1
mov dl, byte [esp + eax + 0x23c]
mov esi, eax
shl esi, 1
and esi, 0xc8
mov ecx, eax
xor ecx, 0xe4
add ecx, esi
xor cl, dl
add cl, 0x8c
mov byte [esp + eax + 0x23c], cl
add eax, 1
jmp 0x410c90
lea eax, [esp + 0x23c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call fcn.004018f0
fnstcw word [esp + 0x4e]
movzx eax, word [esp + 0x4e]
or eax, 0xc00
mov word [esp + 0x16a], ax
fldcw word [esp + 0x16a]
fistp dword [esp + 0x2b4]
fldcw word [esp + 0x4e]
mov ecx, dword [esp + 0x2b4]
mov al, byte [esp + 0xac]
mov byte [esp + 0x114], al
mov byte [esp + 0x260], 0x85
mov byte [esp + 0x261], 0x21
mov eax, 2
mov byte [esp + eax + 0x260], 0
add eax, 1
cmp eax, 7
jne 0x410d2a
mov dword [esp + 0x50], ecx
xor eax, eax
cmp eax, 7
jae 0x410d91
movzx ebx, byte [esp + eax + 0x260]
mov ecx, eax
and ecx, 0xe6e08838
xor ecx, 0xe6e08838
mov edx, eax
and edx, 0x191f77c7
sub edx, ecx
mov ecx, edx
or ecx, ebx
mov esi, ebx
add esi, 1
xor ebx, 0xffffffff
or edx, ebx
add edx, esi
mov esi, ecx
xor esi, edx
xor edx, 0xffffffff
and ecx, edx
shl ecx, 1
sub ecx, esi
add cl, 0x18
mov byte [esp + eax + 0x260], cl
add eax, 1
jmp 0x410d40
lea eax, [esp + 0x260]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call fcn.004018f0
fnstcw word [esp + 0x4c]
movzx eax, word [esp + 0x4c]
or eax, 0xc00
mov word [esp + 0x168], ax
fldcw word [esp + 0x168]
fistp dword [esp + 0x2b0]
fldcw word [esp + 0x4c]
mov ebx, dword [esp + 0x2b0]
lea eax, [esp + 0x40c]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0x400
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
call fcn.0040ab70
lea eax, [esp + 0x40c]
lea ecx, [esp + 0x3c]
lea edx, [esp + 0x25c]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
call fcn.0040b2a0
test al, 1
mov esi, dword [esp + 0x34]
jne 0x410e2f
mov ebx, dword [esp + 0x28]
jmp 0x41272d
cmp ebx, 0
sete al
mov byte [esp + 0x47], al
test al, 1
jne 0x410e42
jmp 0x411d46
mov al, byte [esp + 0xa8]
mov byte [esp + 0x118], al
mov byte [esp + 0x254], 0x70
mov byte [esp + 0x255], 1
mov eax, 2
mov byte [esp + eax + 0x254], 0
add eax, 1
cmp eax, 7
jne 0x410e65
xor eax, eax
cmp eax, 7
jae 0x410eac
movzx edx, byte [esp + eax + 0x254]
mov esi, 0x7f
sub esi, eax
or esi, edx
mov ecx, eax
xor ecx, 0x7f
and ecx, edx
xor esi, 0xffffffff
or ecx, esi
mov esi, dword [esp + 0x34]
xor cl, 0x80
mov byte [esp + eax + 0x254], cl
add eax, 1
jmp 0x410e77
lea eax, [esp + 0x254]
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
cmp eax, 0
je 0x410ffb
mov dword [esp + 0x278], eax
mov dword [esp], eax
call fcn.00412780
mov ebx, eax
mov dword [esp + 0x24c], ebx
add ebx, 0x33b2d3e9
add ebx, 1
sub ebx, 0x33b2d3e9
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410f0b
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
mov edi, eax
xor eax, eax
mov dword [esp], edi
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x278]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ab70
xor eax, eax
lea eax, [esp + 0xa4]
mov dword [esp], 0
mov dword [esp + 0x290], edi
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x24c]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
call dword [0x44a7f0]
sub esp, 0x18
mov eax, dword [esp + 0xa4]
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x410f96
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
mov ebx, dword [0x44a7f0]
mov ecx, dword [esp + 0xa4]
xor edx, edx
mov dword [esp], 0
mov edi, dword [esp + 0x290]
mov dword [esp + 4], edi
mov edx, dword [esp + 0x24c]
mov dword [esp + 8], edx
mov dword [esp + 0x30], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
lea eax, [esp + 0xa4]
mov dword [esp + 0x14], eax
call ebx
sub esp, 0x18
mov ebx, dword [esp + 0x28]
mov dword [esp], edi
call fcn.00408240
mov edi, dword [esp + 0x30]
jmp 0x41148e
call fcn.00408920
mov esi, eax
and esi, 0xf
add esi, 0x10
xor ebx, ebx
lea edi, [esp + 0x3cc]
cmp ebx, esi
setb al
test al, 1
jne 0x4111f0
jmp 0x411020
mov word [edi], 0
mov al, byte [esp + 0x8c]
mov byte [esp + 0x11c], al
mov byte [esp + 0x90], 0x2b
mov byte [esp + 0x91], 7
mov byte [esp + 0x92], 0x5a
mov byte [esp + 0x93], 1
mov byte [esp + 0x94], 0x4f
mov byte [esp + 0x95], 3
mov byte [esp + 0x96], 0x55
mov byte [esp + 0x97], 0xd
mov byte [esp + 0x98], 0x5c
mov byte [esp + 0x99], 0xf
mov byte [esp + 0x9a], 0x21
mov byte [esp + 0x9b], 9
mov byte [esp + 0x9c], 0x6c
mov byte [esp + 0x9d], 0xb
mov byte [esp + 0x9e], 0xa
mov byte [esp + 0x9f], 0x15
mov eax, 0x10
mov byte [esp + eax + 0x90], 0
add eax, 1
cmp eax, 0x11
jne 0x4110b8
xor eax, eax
cmp eax, 0x11
jae 0x4110f8
mov dl, byte [esp + eax + 0x90]
mov esi, eax
shl esi, 1
and esi, 2
mov ecx, eax
xor ecx, 0x81
add ecx, esi
xor cl, dl
add cl, 0x7b
mov byte [esp + eax + 0x90], cl
add eax, 1
jmp 0x4110ca
lea eax, [esp + 0x36c]
lea ecx, [esp + 0x90]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00409de0
lea ecx, [esp + 0x3cc]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00409de0
mov ebx, eax
lea eax, [esp + 0x36c]
xor eax, 0xffffffff
add ebx, eax
add ebx, 1
sar ebx, 1
xor eax, eax
lea eax, [esp + 0x36c]
lea ecx, [esp + 0x88]
mov dword [esp], 0
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], ecx
call dword [0x44a7f0]
sub esp, 0x18
mov eax, dword [esp + 0x88]
xor ecx, ecx
sub ecx, eax
add ecx, 0xfffffffc
xor eax, eax
sub eax, ecx
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x41119c
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
mov edi, eax
mov eax, dword [0x44a7f0]
mov ecx, dword [esp + 0x88]
xor edx, edx
lea edx, [esp + 0x36c]
lea esi, [esp + 0x88]
mov dword [esp], 0
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], esi
call eax
sub esp, 0x18
mov eax, dword [esp + 0x50]
cmp eax, 0
je 0x41121f
jmp 0x4112dc
call fcn.00408920
mov ecx, 0x24
cdq
idiv ecx
movsx eax, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov ecx, edi
add ecx, 2
mov word [edi], ax
xor eax, eax
sub eax, ebx
add eax, 0xffffffff
xor ebx, ebx
sub ebx, eax
mov edi, ecx
jmp 0x411011
mov ebx, dword [esp + 0x28]
mov al, byte [esp + 0x84]
mov byte [esp + 0x120], al
mov byte [esp + 0x22c], 6
mov byte [esp + 0x22d], 0x31
mov byte [esp + 0x22e], 0x5f
mov byte [esp + 0x22f], 0x33
mov byte [esp + 0x230], 0x44
mov byte [esp + 0x231], 0x3d
mov byte [esp + 0x232], 0x53
mov byte [esp + 0x233], 0x3f
mov byte [esp + 0x234], 0x38
mov byte [esp + 0x235], 0x39
mov eax, 0xa
mov esi, dword [esp + 0x34]
mov byte [esp + eax + 0x22c], 0
add eax, 1
cmp eax, 0x10
jne 0x41128a
jmp 0x41129c
xor eax, eax
jmp 0x4112a0
cmp eax, 0x10
jae 0x4112c2
mov cl, byte [esp + eax + 0x22c]
mov dl, al
add dl, 0x34
xor dl, cl
add dl, 0xfc
mov byte [esp + eax + 0x22c], dl
add eax, 1
jmp 0x4112a0
jmp 0x4112c4
lea eax, [esp + 0x22c]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00412b60
jmp 0x41148c
cmp eax, 1
mov ebx, dword [esp + 0x28]
jne 0x4113b2
mov al, byte [esp + 0x80]
mov byte [esp + 0x124], al
mov byte [esp + 0x21c], 0x26
mov byte [esp + 0x21d], 0xf1
mov byte [esp + 0x21e], 0x6e
mov byte [esp + 0x21f], 0xf3
mov byte [esp + 0x220], pe_nt_image_headers32
mov byte [esp + 0x221], 0xed
mov byte [esp + 0x222], 0x7a
mov byte [esp + 0x223], 0xef
mov byte [esp + 0x224], 0xe8
mov byte [esp + 0x225], 0xe9
mov eax, 0xa
mov byte [esp + eax + 0x21c], 0
add eax, 1
cmp eax, 0xe
jne 0x41134c
xor eax, eax
cmp eax, 0xe
jae 0x411396
mov dl, byte [esp + eax + 0x21c]
movzx esi, dl
mov ecx, eax
add ecx, 0x44d915ac
mov dword [esp + 0x30], edi
mov edi, ecx
and edi, esi
shl edi, 1
sub ecx, edi
mov edi, dword [esp + 0x30]
add cl, dl
add cl, 0xa4
mov byte [esp + eax + 0x21c], cl
add eax, 1
jmp 0x41135e
lea eax, [esp + 0x21c]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00412b60
mov esi, dword [esp + 0x34]
jmp 0x41148c
cmp eax, 2
sete al
mov esi, dword [esp + 0x34]
test al, 1
jne 0x4113c5
jmp 0x41148c
mov al, byte [esp + 0x7c]
mov byte [esp + 0x128], al
mov byte [esp + 0x20c], 0x52
mov byte [esp + 0x20d], 0x27
mov byte [esp + 0x20e], 0x96
mov byte [esp + 0x20f], 0x21
mov byte [esp + 0x210], 0xad
mov byte [esp + 0x211], 0x23
mov byte [esp + 0x212], 0x51
mov byte [esp + 0x213], 0x3d
mov byte [esp + 0x214], 0x3c
mov byte [esp + 0x215], 0x3f
mov eax, 0xa
mov byte [esp + eax + 0x20c], 0
add eax, 1
cmp eax, 0xe
jne 0x411425
xor eax, eax
jmp 0x411439
cmp eax, 0xe
jae 0x411477
movzx edx, byte [esp + eax + 0x20c]
mov ecx, eax
add ecx, 0x2b62a189
mov esi, ecx
and esi, edx
shl esi, 1
add ecx, edx
mov edx, ecx
sub edx, esi
mov esi, dword [esp + 0x34]
shl ecx, 1
and ecx, 2
xor edx, 1
add edx, 0x52
add edx, ecx
mov byte [esp + eax + 0x20c], dl
add eax, 1
jmp 0x411439
lea eax, [esp + 0x20c]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00412b60
jmp 0x41148c
jmp 0x41148e
lea eax, [esp + 0x250]
xor ecx, ecx
mov dword [esp + 0x30], edi
mov dword [esp], edi
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.0043d760
mov edi, eax
cmp eax, 0
jl 0x4115fd
mov eax, dword [esp + 0x25c]
mov ecx, dword [esp + 0x3c]
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.0043ddd0
mov edi, eax
mov eax, dword [esp + 0x250]
mov dword [esp + 0x2a0], eax
mov al, byte [esp + 0xf4]
mov byte [esp + 0x154], al
mov byte [esp + 0xf8], 0x77
mov byte [esp + 0xf9], 0x76
mov byte [esp + 0xfa], 0x75
mov byte [esp + 0xfb], 0x74
mov eax, 4
mov byte [esp + eax + 0xf8], 0
add eax, 1
cmp eax, 5
jne 0x411549
xor eax, eax
mov esi, dword [esp + 0x34]
cmp eax, 5
jae 0x411581
mov cl, byte [esp + eax + 0xf8]
mov dl, al
add dl, 0x94
xor dl, cl
add dl, 0x1c
mov byte [esp + eax + 0xf8], dl
add eax, 1
jmp 0x41155f
mov ecx, dword [esp + 0xf8]
xor ebx, ebx
cmp ebx, dword [0x44a7f4]
jb 0x411594
jmp 0x4115f9
mov eax, dword [0x44a7f8]
cmp dword [eax + ebx*8], 0xb62b8d10
sete dl
test dl, 1
jne 0x4115aa
jmp 0x4115ed
mov eax, dword [eax + ebx*8 + 4]
cmp eax, ecx
je 0x4115ed
mov dword [esp + 0x28c], ecx
mov ecx, dword [0x44a7fc]
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 byte [esp + 0x43], dl
call fcn.00439fa0
mov dl, byte [esp + 0x43]
mov ecx, dword [esp + 0x28c]
test dl, 1
je 0x4115f4
jmp 0x4115f9
add ebx, 1
jmp 0x41158a
mov ebx, dword [esp + 0x28]
mov eax, dword [esp + 0x3c]
mov dword [esp], eax
call fcn.00436e70
mov dword [esp + 0x3c], 0
cmp edi, 0
setge al
test al, 1
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x30]
jne 0x411637
jmp 0x411625
mov dword [esp + 0x2c], 0
mov eax, 4
jmp 0x411d38
cmp ecx, 1
jne 0x411a09
mov al, byte [esp + 0x78]
mov byte [esp + 0x12c], al
mov byte [esp + 0x204], 0xb2
mov byte [esp + 0x205], 0xab
mov byte [esp + 0x206], 0x1e
mov eax, 3
mov byte [esp + eax + 0x204], 0
add eax, 1
cmp eax, 7
jne 0x411668
xor eax, eax
jmp 0x41167c
cmp eax, 7
jae 0x4116c1
movzx edx, byte [esp + eax + 0x204]
mov ecx, eax
add ecx, 0x26c8a37a
mov esi, edx
xor esi, 0xffffffff
and ecx, esi
mov esi, 0x85
sub esi, eax
and esi, edx
or ecx, esi
mov edx, ecx
shl edx, 1
and edx, 0x3a
xor ecx, 0x9d
add ecx, edx
add cl, 1
mov byte [esp + eax + 0x204], cl
add eax, 1
jmp 0x41167c
lea eax, [esp + 0x204]
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov dword [esp + 0x58], eax
mov al, byte [esp + 0x74]
mov byte [esp + 0x130], al
mov byte [esp + 0x1fc], 0x53
mov byte [esp + 0x1fd], 0x45
mov byte [esp + 0x1fe], 0xca
mov eax, 3
mov byte [esp + eax + 0x1fc], 0
add eax, 1
cmp eax, 5
jne 0x411704
xor eax, eax
jmp 0x411718
cmp eax, 5
jae 0x41174c
mov dl, byte [esp + eax + 0x1fc]
movzx esi, dl
mov ecx, eax
add ecx, 0x47993ad3
mov ebx, edi
mov edi, ecx
and edi, esi
shl edi, 1
sub ecx, edi
mov edi, ebx
add cl, dl
add cl, 0xe1
mov byte [esp + eax + 0x1fc], cl
add eax, 1
jmp 0x411718
lea eax, [esp + 0x1fc]
mov ecx, dword [esp + 0x38]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00401890
mov esi, eax
mov dword [esp], edi
call fcn.00412bb0
mov ebx, eax
cmp dword [esp + 0x58], 0
setne al
mov dword [esp + 0x54], 0
mov byte [esp + 0x45], al
test al, 1
jne 0x411789
jmp 0x41179e
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call fcn.00412750
add eax, 1
mov dword [esp + 0x54], eax
jmp 0x41179e
cmp esi, 0
setne cl
xor eax, eax
mov byte [esp + 0x46], cl
test cl, 1
jne 0x4117b1
jmp 0x4117bc
mov dword [esp], esi
call fcn.00412750
add eax, 1
add ebx, 0x86a9b773
add ebx, 0x79564896
mov ecx, dword [esp + 0x54]
xor ecx, 0xffffffff
sub ecx, 0xffffffff
sub ebx, ecx
xor ecx, ecx
mov dword [esp + 0x2a8], eax
sub ecx, eax
sub ebx, ecx
xor ecx, ecx
sub ecx, ebx
add ecx, 0xffffffff
xor eax, eax
sub eax, ecx
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411802
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
mov dword [esp + 0x2c], eax
mov al, byte [esp + 0x70]
mov byte [esp + 0x134], al
mov byte [esp + 0x1e4], 0x16
mov byte [esp + 0x1e5], 0x99
mov byte [esp + 0x1e6], 0x1b
mov byte [esp + 0x1e7], 0x97
mov byte [esp + 0x1e8], 6
mov byte [esp + 0x1e9], 0x95
mov byte [esp + 0x1ea], 0xe
mov byte [esp + 0x1eb], 0x93
mov byte [esp + 0x1ec], 4
mov byte [esp + 0x1ed], 0x91
mov byte [esp + 0x1ee], 0x1a
mov byte [esp + 0x1ef], 0x8f
mov byte [esp + 0x1f0], 0xc3
mov byte [esp + 0x1f1], 0x8d
mov byte [esp + 0x1f2], 0xc4
mov byte [esp + 0x1f3], 0x8b
mov byte [esp + 0x1f4], 0x88
mov byte [esp + 0x1f5], 0x89
mov eax, 0x12
mov byte [esp + eax + 0x1e4], 0
add eax, 1
cmp eax, 0x18
jne 0x4118ae
mov dword [esp + 0x2ac], esi
xor eax, eax
cmp eax, 0x18
jae 0x41193a
movzx ecx, byte [esp + eax + 0x1e4]
mov ebx, eax
and ebx, 0xc59bcea4
mov esi, eax
and esi, 0xc59bcea4
mov edx, eax
and edx, 2
xor edx, 2
imul edx, esi
mov esi, eax
and esi, 2
or ebx, 2
imul ebx, esi
add ebx, edx
mov edx, eax
xor edx, 0xc59bcea6
add edx, ebx
mov esi, edx
and esi, ecx
shl esi, 1
add edx, ecx
sub edx, esi
mov ecx, edx
shl ecx, 1
and ecx, 0x82
xor edx, 0xc1
add edx, ecx
add dl, 1
mov byte [esp + eax + 0x1e4], dl
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
jmp 0x4118c7
lea eax, [esp + 0x1e4]
mov ecx, dword [esp + 0x2c]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00409de0
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], edi
call fcn.00409de0
mov ebx, eax
add ebx, 2
mov word [eax], 0x22
mov esi, dword [esp + 0x34]
mov dword [esp], edi
call fcn.00408240
test byte [esp + 0x45], 1
jne 0x41198f
jmp 0x4119c1
mov edi, ebx
add edi, 2
mov word [ebx], 0x2c
xor eax, eax
mov dword [esp], edi
mov eax, dword [esp + 0x54]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ab70
shl eax, 1
add edi, eax
mov ebx, edi
test byte [esp + 0x46], 1
jne 0x4119ca
jmp 0x4119fc
mov eax, ebx
add eax, 2
mov word [ebx], 0x2c
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x2a8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2ac]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ab70
xor edi, edi
xor ecx, ecx
mov ebx, dword [esp + 0x28]
jmp 0x411d34
mov dword [esp + 0x2c], 0
cmp ecx, 2
je 0x411a1b
jmp 0x411d34
mov dword [esp], edi
call fcn.00412bb0
xor eax, 0xffffffff
sub eax, 0xffffffff
mov ecx, 0x1d
sub ecx, eax
add ecx, 1
mov edx, 2
mov eax, ecx
mul edx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411a4b
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
mov dword [esp + 0x2c], eax
mov al, byte [esp + 0x64]
mov byte [esp + 0x138], al
mov byte [esp + 0x68], 0x6e
mov byte [esp + 0x69], 0x49
mov byte [esp + 0x6a], 0x4e
mov byte [esp + 0x6b], 0x4f
mov eax, 4
mov byte [esp + eax + 0x68], 0
add eax, 1
cmp eax, 8
jne 0x411a7b
xor eax, eax
cmp eax, 8
jae 0x411ab3
mov dl, byte [esp + eax + 0x68]
mov esi, eax
and esi, 0x6e
xor esi, 0x6e
mov ecx, eax
and ecx, 0x91
sub ecx, esi
xor cl, dl
add cl, 0x26
mov byte [esp + eax + 0x68], cl
add eax, 1
jmp 0x411a8a
mov al, byte [esp + 0x60]
mov byte [esp + 0x13c], al
mov byte [esp + 0x16c], 0xc
mov byte [esp + 0x16d], 0x9f
mov byte [esp + 0x16e], 0xf
mov byte [esp + 0x16f], 0x91
mov byte [esp + 0x170], 0x19
mov byte [esp + 0x171], 0x93
mov byte [esp + 0x172], 0x35
mov byte [esp + 0x173], 0x95
mov byte [esp + 0x174], 6
mov byte [esp + 0x175], 0x97
mov byte [esp + 0x176], 3
mov byte [esp + 0x177], 0x89
mov byte [esp + 0x178], 0x10
mov byte [esp + 0x179], 0x8b
mov byte [esp + 0x17a], 0x2d
mov byte [esp + 0x17b], 0x8d
mov byte [esp + 0x17c], 0x10
mov byte [esp + 0x17d], 0x8f
mov byte [esp + 0x17e], 0x12
mov byte [esp + 0x17f], 0x81
mov byte [esp + 0x180], 0xe0
mov byte [esp + 0x181], 0x83
mov byte [esp + 0x182], 0xdd
mov byte [esp + 0x183], 0x85
mov byte [esp + 0x184], 0x23
mov byte [esp + 0x185], 0x87
mov byte [esp + 0x186], 0xe
mov byte [esp + 0x187], 0xf9
mov byte [esp + 0x188], 0x5f
mov byte [esp + 0x189], 0xfb
mov byte [esp + 0x18a], 0x5f
mov byte [esp + 0x18b], 0xfd
mov byte [esp + 0x18c], 0x9c
mov byte [esp + 0x18d], 0xff
mov byte [esp + 0x18e], 0x5c
mov byte [esp + 0x18f], 0xf1
mov byte [esp + 0x190], 0x7b
mov byte [esp + 0x191], 0xf3
mov byte [esp + 0x192], 0x62
mov byte [esp + 0x193], 0xf5
mov byte [esp + 0x194], 0x57
mov byte [esp + 0x195], 0xf7
mov byte [esp + 0x196], 0x63
mov byte [esp + 0x197], 0xe9
mov byte [esp + 0x198], 0x7d
mov byte [esp + 0x199], 0xeb
mov byte [esp + 0x19a], 0x8a
mov byte [esp + 0x19b], 0xed
mov byte [esp + 0x19c], 0xb3
mov byte [esp + 0x19d], 0xef
mov byte [esp + 0x19e], 0x48
mov byte [esp + 0x19f], 0xe1
mov byte [esp + 0x1a0], 0x80
mov byte [esp + 0x1a1], 0xe3
mov byte [esp + 0x1a2], 0x80
mov byte [esp + 0x1a3], 0xe5
mov byte [esp + 0x1a4], 0xe4
mov byte [esp + 0x1a5], 0xe7
mov eax, 0x3a
mov byte [esp + eax + 0x16c], 0
add eax, 1
cmp eax, 0x3d
jne 0x411c93
xor eax, eax
cmp eax, 0x3d
jae 0x411cf6
movzx edx, byte [esp + eax + 0x16c]
mov ecx, eax
add ecx, 0xc23c3ea5
xor ecx, edx
mov esi, ecx
shl esi, 1
and esi, 0x8c
mov edx, ecx
xor edx, 0xc6
add edx, esi
mov esi, edi
mov edi, ecx
shl edi, 1
and edi, 2
shl ecx, 1
and ecx, 2
add ecx, 0xff
sub edx, ecx
add edx, edi
mov edi, esi
mov byte [esp + eax + 0x16c], dl
add eax, 1
jmp 0x411ca5
lea eax, [esp + 0x16c]
mov ecx, dword [esp + 0x2c]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00409de0
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.00409de0
lea ecx, [esp + 0x68]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00409de0
mov esi, dword [esp + 0x34]
mov ecx, 2
jmp 0x411d34
xor eax, eax
jmp 0x411d38
cmp eax, 0
je 0x41202a
jmp 0x41272d
call fcn.00412bd0
xor ebx, 1
mov ecx, dword [esp + 0x50]
mov eax, ecx
xor eax, 2
or ebx, eax
sete al
mov dword [esp + 0x2c], 0
test al, 1
jne 0x411d73
xor edi, edi
mov ebx, dword [esp + 0x28]
jmp 0x41202a
mov eax, dword [esp + 0x3c]
mov dword [esp], eax
call fcn.00412780
mov ebx, eax
and ebx, 1
or eax, 1
add ebx, eax
mov ecx, 2
mov eax, ebx
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411da1
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
mov edi, eax
mov eax, dword [esp + 0x3c]
xor ecx, ecx
mov dword [esp], edi
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call fcn.0040ab70
mov eax, dword [esp + 0x25c]
add eax, 0x18
add eax, 0xa1fa64bd
add eax, 1
sub eax, 0xa1fa64bd
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x411df6
mov ecx, eax
mov dword [esp], ecx
call fcn.00408230
mov dword [esp + 0x2c], eax
mov al, byte [esp + 0x5c]
mov byte [esp + 0x140], al
mov byte [esp + 0x1ac], 0xd8
mov byte [esp + 0x1ad], 0x49
mov byte [esp + 0x1ae], 0xdd
mov byte [esp + 0x1af], 0x4f
mov byte [esp + 0x1b0], 0xc7
mov byte [esp + 0x1b1], 0x4d
mov byte [esp + 0x1b2], 0xa7
mov byte [esp + 0x1b3], 0x43
mov byte [esp + 0x1b4], 0xd6
mov byte [esp + 0x1b5], 0x41
mov byte [esp + 0x1b6], 0xd1
mov byte [esp + 0x1b7], 0x47
mov byte [esp + 0x1b8], 0xdc
mov byte [esp + 0x1b9], 0x45
mov byte [esp + 0x1ba], 0x9f
mov byte [esp + 0x1bb], 0x7b
mov byte [esp + 0x1bc], 0xe4
mov byte [esp + 0x1bd], 0x79
mov byte [esp + 0x1be], 0xe2
mov byte [esp + 0x1bf], 0x7f
mov byte [esp + 0x1c0], 0x5c
mov byte [esp + 0x1c1], 0x7d
mov byte [esp + 0x1c2], 0xaf
mov byte [esp + 0x1c3], 0x73
mov byte [esp + 0x1c4], 0x95
mov byte [esp + 0x1c5], 0x71
mov byte [esp + 0x1c6], 0xfe
mov byte [esp + 0x1c7], 0x77
mov byte [esp + 0x1c8], 0x91
mov byte [esp + 0x1c9], 0x75
mov byte [esp + 0x1ca], 0x8d
mov byte [esp + 0x1cb], 0x6b
mov byte [esp + 0x1cc], 0x48
mov byte [esp + 0x1cd], 0x69
mov byte [esp + 0x1ce], 0x88
mov byte [esp + 0x1cf], 0x6f
mov byte [esp + 0x1d0], 0xe5
mov byte [esp + 0x1d1], 0x6d
mov byte [esp + 0x1d2], 0xf2
mov byte [esp + 0x1d3], 0x63
mov byte [esp + 0x1d4], 0x81
mov byte [esp + 0x1d5], 0x61
mov byte [esp + 0x1d6], 0xf1
mov byte [esp + 0x1d7], 0x67
mov byte [esp + 0x1d8], 0xf3
mov byte [esp + 0x1d9], 0x65
mov byte [esp + 0x1da], 0x3a
mov byte [esp + 0x1db], 0x1b
mov byte [esp + 0x1dc], 0x18
mov byte [esp + 0x1dd], 0x19
mov eax, 0x32
mov byte [esp + eax + 0x1ac], 0
add eax, 1
cmp eax, 0x36
jne 0x411fa2
xor eax, eax
cmp eax, 0x36
jae 0x411ff1
mov dl, byte [esp + eax + 0x1ac]
movzx esi, dl
mov ecx, eax
add ecx, 0xbb3ff892
mov ebx, ecx
and ebx, esi
mov esi, dword [esp + 0x34]
shl ebx, 1
sub ecx, ebx
add cl, dl
add cl, 0x26
mov byte [esp + eax + 0x1ac], cl
mov ecx, eax
xor ecx, 1
shl eax, 1
and eax, 2
add eax, ecx
jmp 0x411fb4
lea eax, [esp + 0x1ac]
mov ecx, dword [esp + 0x2c]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00409de0
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.00409de0
mov ebx, dword [esp + 0x28]
mov dword [esp], edi
call fcn.00408240
mov ecx, dword [esp + 0x50]
jmp 0x412026
xor edi, edi
jmp 0x41202a
test ecx, ecx
je 0x41204b
jmp 0x412030
mov eax, ecx
sub eax, 1
je 0x4121fc
jmp 0x41203d
sub ecx, 2
je 0x412475
jmp 0x4126f6
test byte [esp + 0x47], 1
jne 0x412057
jmp 0x4121fc
jmp 0x412059
lea eax, [esp + 0x328]
xor ecx, ecx
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], 0x44
call fcn.004082b0
mov dword [esp + 0x328], 0x44
mov eax, dword [0x44a7e8]
mov dword [esp], eax
mov dword [esp + 4], 0x38c42730
call fcn.0043cf80
test eax, eax
setne cl
xor ecx, ecx
lea edx, [esp + 0x2d4]
mov dword [esp], edi
mov ecx, dword [esp + 0x2c]
mov dword [esp + 4], ecx
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
lea ecx, [esp + 0x328]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], edx
call eax
sub esp, 0x28
cmp eax, 0
je 0x4121f7
mov eax, dword [esp + 0x2d4]
mov dword [esp + 0x298], eax
mov al, byte [esp + 0xe8]
mov byte [esp + 0x158], al
mov byte [esp + 0xec], 0x77
mov byte [esp + 0xed], 0x76
mov byte [esp + 0xee], 0x75
mov byte [esp + 0xef], 0x74
mov eax, 4
mov byte [esp + eax + 0xec], 0
add eax, 1
cmp eax, 5
jne 0x412141
xor eax, eax
cmp eax, 5
jae 0x412175
mov cl, byte [esp + eax + 0xec]
mov dl, al
add dl, 0x94
xor dl, cl
add dl, 0x1c
mov byte [esp + eax + 0xec], dl
add eax, 1
jmp 0x412153
mov dword [esp + 0x30], edi
mov ecx, dword [esp + 0xec]
xor edi, edi
cmp edi, dword [0x44a7f4]
jb 0x41218c
jmp 0x4121f1
mov eax, dword [0x44a7f8]
cmp dword [eax + edi*8], 0xb62b8d10
sete bl
test bl, 1
jne 0x4121a2
jmp 0x4121dd
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x4121dd
mov dword [esp + 0x27c], ecx
mov ecx, dword [0x44a7fc]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esp + 0x298]
mov dword [esp + 0xc], eax
call fcn.00439fa0
mov ecx, dword [esp + 0x27c]
test bl, 1
je 0x4121e8
mov ebx, dword [esp + 0x28]
jmp 0x4121f1
add edi, 1
mov ebx, dword [esp + 0x28]
jmp 0x412182
mov edi, dword [esp + 0x30]
jmp 0x4121f7
jmp 0x4126f6
mov dword [esp + 0x30], edi
mov eax, dword [0x44a7e8]
mov dword [esp], eax
mov dword [esp + 4], 0xe117db1e
call fcn.0043cf80
mov edi, eax
cmp edi, 0
setne bl
test bl, 1
jne 0x412224
jmp 0x412224
call fcn.00412bd0
call fcn.00412bd0
test bl, 1
jne 0x412235
xor edi, edi
mov eax, dword [esp + 0x3c]
xor ecx, ecx
lea ecx, [0x41dd20]
mov dword [esp], 0
mov dword [esp + 4], 0
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
call edi
sub esp, 0x18
mov edi, eax
cmp edi, 0
setne al
mov ebx, dword [esp + 0x28]
test al, 1
jne 0x412282
jmp 0x41246c
call fcn.00412bd0
mov dword [esp + 0x2bc], 0xffffffff
mov dword [esp + 0x2b8], 0xdc3cba00
mov al, byte [esp + 0x144]
mov byte [esp + 0x150], al
mov byte [esp + 0x148], 0x77
mov byte [esp + 0x149], 0x76
mov byte [esp + 0x14a], 0x75
mov byte [esp + 0x14b], 0x74
mov eax, 4
mov byte [esp + eax + 0x148], 0
add eax, 1
cmp eax, 5
jne 0x4122d0
xor eax, eax
cmp eax, 5
jae 0x412304
mov cl, byte [esp + eax + 0x148]
mov dl, al
add dl, 0x94
xor dl, cl
add dl, 0x1c
mov byte [esp + eax + 0x148], dl
add eax, 1
jmp 0x4122e2
mov ecx, dword [esp + 0x148]
xor ebx, ebx
cmp ebx, dword [0x44a7f4]
jb 0x412317
jmp 0x41238c
mov eax, dword [0x44a7f8]
cmp dword [eax + ebx*8], 0x4e66b5a3
sete dl
test dl, 1
jne 0x41232d
jmp 0x412380
mov eax, dword [eax + ebx*8 + 4]
cmp eax, ecx
jne 0x412337
jmp 0x412380
mov dword [esp + 0x294], ecx
mov ecx, dword [0x44a7fc]
mov byte [esp + 0x44], dl
xor edx, edx
lea edx, [esp + 0x2b8]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 0xc
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], edx
call fcn.00439fa0
mov dl, byte [esp + 0x44]
mov ecx, dword [esp + 0x294]
test dl, 1
je 0x412387
jmp 0x41238c
add ebx, 1
jmp 0x41230d
mov al, byte [esp + 0xdc]
mov byte [esp + 0x15c], al
mov byte [esp + 0xe0], 0x77
mov byte [esp + 0xe1], 0x76
mov byte [esp + 0xe2], 0x75
mov byte [esp + 0xe3], 0x74
mov eax, 4
mov byte [esp + eax + 0xe0], 0
add eax, 1
cmp eax, 5
jne 0x4123bf
xor eax, eax
cmp eax, 5
jae 0x4123f3
mov cl, byte [esp + eax + 0xe0]
mov dl, al
add dl, 0x94
xor dl, cl
add dl, 0x1c
mov byte [esp + eax + 0xe0], dl
add eax, 1
jmp 0x4123d1
mov ecx, dword [esp + 0xe0]
xor ebx, ebx
cmp ebx, dword [0x44a7f4]
jb 0x412406
jmp 0x412464
mov eax, dword [0x44a7f8]
cmp dword [eax + ebx*8], 0xb62b8d10
sete dl
test dl, 1
jne 0x41241c
jmp 0x412458
mov eax, dword [eax + ebx*8 + 4]
cmp eax, ecx
je 0x412458
mov dword [esp + 0x280], ecx
mov ecx, dword [0x44a7fc]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov dword [esp + 0xc], edi
mov byte [esp + 0x42], dl
call fcn.00439fa0
mov dl, byte [esp + 0x42]
mov ecx, dword [esp + 0x280]
test dl, 1
je 0x41245f
jmp 0x412464
add ebx, 1
jmp 0x4123fc
mov ebx, dword [esp + 0x28]
jmp 0x41246a
jmp 0x41246c
mov edi, dword [esp + 0x30]
jmp 0x4126f6
mov dword [esp + 0x30], edi
lea edi, [esp + 0x2e4]
xor eax, eax
mov ecx, 0x11
rep stosd dword es:[edi], eax
mov dword [esp + 0x2e4], 0x44
mov eax, dword [0x44a7e8]
mov dword [esp], eax
mov dword [esp + 4], 0x38c42730
call fcn.0043cf80
test eax, eax
setne cl
xor ecx, ecx
lea ecx, [esp + 0x2e4]
lea edx, [esp + 0x2c4]
mov dword [esp], 0
mov edi, dword [esp + 0x2c]
mov dword [esp + 4], edi
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], ecx
mov dword [esp + 0x24], edx
call eax
sub esp, 0x28
cmp eax, 0
je 0x4126f2
lea eax, [esp + 0x2c4]
add eax, 4
mov eax, dword [eax]
mov dword [esp + 0x29c], eax
mov al, byte [esp + 0xd0]
mov byte [esp + 0x160], al
mov byte [esp + 0xd4], 0x77
mov byte [esp + 0xd5], 0x76
mov byte [esp + 0xd6], 0x75
mov byte [esp + 0xd7], 0x74
mov eax, 4
mov byte [esp + eax + 0xd4], 0
add eax, 1
cmp eax, 5
jne 0x412559
xor eax, eax
cmp eax, 5
jae 0x41258d
mov cl, byte [esp + eax + 0xd4]
mov dl, al
add dl, 0x94
xor dl, cl
add dl, 0x1c
mov byte [esp + eax + 0xd4], dl
add eax, 1
jmp 0x41256b
mov ecx, dword [esp + 0xd4]
xor edi, edi
cmp edi, dword [0x44a7f4]
jb 0x4125a0
jmp 0x412605
mov eax, dword [0x44a7f8]
cmp dword [eax + edi*8], 0xb62b8d10
sete bl
test bl, 1
jne 0x4125b6
jmp 0x4125f1
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x4125f1
mov dword [esp + 0x288], ecx
mov ecx, dword [0x44a7fc]
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.00439fa0
mov ecx, dword [esp + 0x288]
test bl, 1
je 0x4125fc
mov ebx, dword [esp + 0x28]
jmp 0x412605
add edi, 1
mov ebx, dword [esp + 0x28]
jmp 0x412596
mov eax, dword [esp + 0x2c4]
mov dword [esp + 0x2a4], eax
mov al, byte [esp + 0xc4]
mov byte [esp + 0x164], al
mov byte [esp + 0xc8], 0x77
mov byte [esp + 0xc9], 0x76
mov byte [esp + 0xca], 0x75
mov byte [esp + 0xcb], 0x74
mov eax, 4
mov byte [esp + eax + 0xc8], 0
add eax, 1
cmp eax, 5
jne 0x412646
xor eax, eax
cmp eax, 5
jae 0x41267a
mov cl, byte [esp + eax + 0xc8]
mov dl, al
add dl, 0x94
xor dl, cl
add dl, 0x1c
mov byte [esp + eax + 0xc8], dl
add eax, 1
jmp 0x412658
mov ecx, dword [esp + 0xc8]
xor edi, edi
cmp edi, dword [0x44a7f4]
jb 0x41268d
jmp 0x4126f2
mov eax, dword [0x44a7f8]
cmp dword [eax + edi*8], 0xb62b8d10
sete bl
test bl, 1
jne 0x4126a3
jmp 0x4126de
mov eax, dword [eax + edi*8 + 4]
cmp eax, ecx
je 0x4126de
mov dword [esp + 0x284], ecx
mov ecx, dword [0x44a7fc]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], 4
mov eax, dword [esp + 0x2a4]
mov dword [esp + 0xc], eax
call fcn.00439fa0
mov ecx, dword [esp + 0x284]
test bl, 1
je 0x4126e9
mov ebx, dword [esp + 0x28]
jmp 0x4126f2
add edi, 1
mov ebx, dword [esp + 0x28]
jmp 0x412683
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x3c]
mov dword [esp], eax
call fcn.00436e70
cmp edi, 0
sete al
test al, 1
jne 0x412716
jmp 0x41270e
mov dword [esp], edi
call fcn.00408240
cmp dword [esp + 0x2c], 0
je 0x41272b
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call fcn.00408240
jmp 0x41272b
jmp 0x41272d
add esi, 1
jmp 0x41099c
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret