Function at 0x4ab550
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x1a0
mov esi, ecx
lea ecx, [esp + 0x130]
mov edx, str.keep_alive
mov dword [esp + 4], ecx
push 0xa
call fcn.004a0a30
add esp, 4
cmp dword [esp + 0x130], 0
jne 0x4ac8cc
movsd xmm0, qword [esp + 0x134]
movsd xmm1, qword [esp + 0x13c]
lea ecx, [esp + 0x30]
mov edx, 0x837404
movsd qword [esp + 0xf8], xmm1
movsd qword [esp + 0xf0], xmm0
push 0x10
call fcn.004a0a30
add esp, 4
cmp dword [esp + 0x30], 0
jne 0x4ac8ed
movsd xmm1, qword [esp + 0x3c]
movq xmm0, qword [esp + 0x34]
movq xmm2, qword [esp + 0xf0]
lea eax, [esi + 0x2c]
xor ecx, ecx
mov dword [esp + 8], esi
mov dword [esp + 0xd8], eax
movsd qword [esp + 0x148], xmm1
movq xmm1, qword [esp + 0xf8]
movq qword [esp + 0x140], xmm0
movq qword [esp + 0x130], xmm2
movq qword [esp + 0x138], xmm1
mov dword [esp + 0x150], 0
mov dword [esp + 0x154], 0x44
mov dword [esp + 0x158], 0
mov dword [esp + 0x15c], 0
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0x45
mov dword [esp + 0x168], 0
mov dword [esp + 0x16c], 0
mov dword [esp + 0x17c], 0
mov dword [esp + 0x178], 0
mov dword [esp + 0x174], 0x47
mov dword [esp + 0x170], 0
jmp 0x4ab6d5
mov ecx, dword [esp + 0x84]
mov esi, dword [esp + 8]
inc ecx
mov eax, ecx
shl eax, 4
cmp ecx, 5
lea eax, [esp + eax + 0x130]
mov dword [esp + 4], eax
je 0x4abafe
mov eax, dword [esi + 0x28]
mov dword [esp + 0x84], ecx
test eax, eax
mov dword [esp + 0x24], eax
je 0x4ab6b0
mov edi, dword [esp + 8]
mov edx, dword [esp + 4]
mov ecx, edi
call fcn.004817e0
movzx ecx, word [edi + 0x38]
mov esi, eax
mov edx, dword [edi + 0x18]
mov eax, dword [edi + 0x24]
mov ebx, dword [edi + 0x1c]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x88], esi
and esi, ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x18], edx
jmp 0x4ab745
movzx eax, byte [eax + 4]
mov ecx, dword [esp + 4]
mov edi, dword [esp + 0x20]
cmp al, byte [ecx + 4]
je 0x4ab81e
nop dword [eax]
inc dword [esp + 0x2c]
inc esi
mov eax, esi
nop word [eax + eax]
mov esi, eax
xor eax, eax
cmp esi, ebx
jae 0x4ab750
movzx ecx, word [edx + esi*4]
cmp ecx, 0xffff
je 0x4ab6b0
mov edi, dword [esp + 0x14]
movzx eax, word [edx + esi*4 + 2]
mov dword [esp + 0x20], ecx
mov edx, esi
mov ecx, edi
and ecx, eax
sub edx, ecx
mov ecx, dword [esp + 0x20]
and edx, edi
cmp dword [esp + 0x2c], edx
mov edx, dword [esp + 0x18]
ja 0x4ab6b0
cmp ax, word [esp + 0x88]
jne 0x4ab740
mov edx, dword [esp + 0x24]
cmp edx, ecx
jbe 0x4ac8c2
mov eax, dword [esp + 0xc]
imul edx, ecx, 0x34
mov dword [esp + 0x28], edx
mov edi, dword [eax + edx + 0x20]
mov edx, dword [esp + 4]
test edi, edi
setne al
cmp dword [edx], 0
sete dl
cmp al, dl
mov edx, dword [esp + 0x18]
je 0x4ab740
mov ecx, edi
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x28]
test ecx, ecx
lea eax, [eax + edi + 0x20]
je 0x4ab724
mov ecx, dword [eax + 8]
mov edx, dword [esp + 4]
mov edi, dword [esp + 0x20]
cmp ecx, dword [edx + 8]
mov edx, dword [esp + 0x18]
jne 0x4ab740
push ecx
mov ecx, dword [esp + 8]
push dword [ecx + 4]
push dword [eax + 4]
call fcn.007be090
mov edx, dword [esp + 0x24]
add esp, 0xc
test eax, eax
jne 0x4ab740
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x28]
cmp dword [edx + eax], 0
je 0x4ab89a
add eax, edx
mov ebx, dword [eax + 4]
mov eax, dword [esp + 0x24]
nop word cs:[eax + eax]
nop
lea ecx, [esp + 0x30]
push ebx
push dword [esp + 0xdc]
push eax
call fcn.004ac950
add esp, 0xc
cmp dword [esp + 0x38], 0
je 0x4ab883
mov ebx, dword [esp + 0x3c]
mov eax, dword [esp + 0x40]
push dword [esp + 0x48]
push dword [esp + 0x48]
lea ecx, [esp + 0x54]
push ecx
call dword [eax + 0xc]
add esp, 0xc
mov eax, dword [esp + 8]
mov edx, dword [eax + 0x24]
mov eax, dword [eax + 0x28]
jmp 0x4ab840
mov eax, dword [esp + 0x40]
push dword [esp + 0x48]
push dword [esp + 0x48]
lea ecx, [esp + 0x54]
push ecx
call dword [eax + 0xc]
add esp, 0xc
mov edx, dword [esp + 8]
lea ecx, [esp + 0x30]
push edi
push esi
call fcn.004accd0
add esp, 8
lea ecx, [esp + 0x3c]
mov eax, dword [ecx + 0x10]
movq xmm0, qword [ecx]
movq xmm1, qword [ecx + 8]
mov dword [esp + 0x100], eax
mov eax, dword [esp + 0x50]
movq qword [esp + 0xf8], xmm1
movq qword [esp + 0xf0], xmm0
test eax, eax
je 0x4ab8f0
push dword [esp + 0x58]
push dword [esp + 0x58]
lea ecx, [esp + 0x64]
push ecx
call dword [eax + 0xc]
add esp, 0xc
cmp byte [esp + 0x100], 2
je 0x4ab6b0
mov eax, dword [esp + 0xf0]
push dword [esp + 0xf8]
push dword [esp + 0xf8]
lea ecx, [esp + 0x104]
push ecx
call dword [eax + 0xc]
add esp, 0xc
mov eax, dword [0x94bccc]
cmp eax, 3
ja 0x4ab6b0
movzx eax, byte [0x94a7a4]
test al, al
je 0x4ab6b0
movzx eax, al
cmp eax, 1
je 0x4ab965
cmp eax, 2
je 0x4ab9a9
mov ecx, 0x94a79c
call fcn.007d3740
test al, al
je 0x4ab6b0
movzx eax, al
cmp eax, 2
je 0x4ab9a9
mov eax, dword [0x94a79c]
mov ecx, dword [0x94bfb8]
cmp ecx, 2
jne 0x4ab6b0
cmp dword [0x94bcc0], 0
mov edx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov ecx, dword [0x94bcc8]
je 0x4ab999
mov esi, dword [ecx + 8]
dec esi
and esi, 0xfffffff8
lea edx, [esi + edx + 8]
push eax
push edx
call dword [ecx + 0x14]
add esp, 8
test al, al
je 0x4ab6b0
mov esi, dword [0x94a79c]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x4ac90e
mov ecx, dword [esi + 0x1c]
movq xmm0, qword [esi + 0x24]
lea edi, [esi + 0x1c]
mov dword [esp + 0xb0], ecx
mov ecx, dword [esp + 4]
mov dword [esp + 0xb4], eax
movq qword [esp + 0xb8], xmm0
mov dword [esp + 0xc0], 0
call fcn.004ad170
mov dword [esp + 0xdc], eax
lea eax, [esp + 0x98]
mov dword [esp + 0xf0], 0x83749c
mov dword [esp + 0xf4], 1
mov dword [esp + 0x100], 0
mov dword [esp + 0xe0], edx
mov dword [esp + 0x70], eax
lea eax, [esp + 0xdc]
mov dword [esp + 0x74], 1
mov dword [esp + 0x78], edi
mov dword [esp + 0x8c], eax
lea eax, [esp + 0x8c]
mov dword [esp + 0x90], 0x41c480
mov dword [esp + 0xf8], eax
lea eax, [esp + 0xb0]
mov dword [esp + 0xfc], 1
mov dword [esp + 0x98], eax
lea eax, [esp + 0xf0]
mov dword [esp + 0x9c], eax
lea eax, [esp + 0x70]
mov dword [esp + 0xa0], 0x836938
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], esi
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 1
mov eax, dword [0x94bfb8]
cmp eax, 2
jne 0x4ab6b0
cmp dword [0x94bcc0], 0
mov edi, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov esi, dword [0x94bcc8]
je 0x4abad9
mov eax, dword [esi + 8]
dec eax
and eax, 0xfffffff8
lea edi, [eax + edi + 8]
lea eax, [esp + 0x30]
push eax
push edi
call dword [esi + 0x28]
add esp, 8
test al, al
je 0x4ab6b0
lea eax, [esp + 0x30]
push eax
push edi
call dword [esi + 0x2c]
add esp, 8
jmp 0x4ab6b0
lea edi, [esp + 0x30]
lea eax, [esp + 0xf0]
mov dword [esp + 0xfc], 0
mov dword [esp + 0xf8], 0
mov dword [esp + 0xf4], 0x43
mov dword [esp + 0xf0], 0
mov edx, esi
mov ecx, edi
push eax
call fcn.004acf20
add esp, 4
cmp byte [esp + 0x40], 2
je 0x4abcf8
mov eax, dword [esp + 0x30]
push dword [esp + 0x38]
push dword [esp + 0x38]
lea ecx, [esp + 0x44]
push ecx
call dword [eax + 0xc]
add esp, 0xc
mov eax, dword [0x94bccc]
cmp eax, 3
ja 0x4abcf8
movzx eax, byte [0x94a798]
test al, al
je 0x4abcf8
movzx eax, al
cmp eax, 1
je 0x4abba8
cmp eax, 2
je 0x4abbec
mov ecx, 0x94a790
call fcn.007d3740
test al, al
je 0x4abcf8
movzx eax, al
cmp eax, 2
je 0x4abbec
mov eax, dword [0x94a790]
mov ecx, dword [0x94bfb8]
cmp ecx, 2
jne 0x4abcf8
cmp dword [0x94bcc0], 0
mov edx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov ecx, dword [0x94bcc8]
je 0x4abbdc
mov esi, dword [ecx + 8]
dec esi
and esi, 0xfffffff8
lea edx, [esi + edx + 8]
push eax
push edx
call dword [ecx + 0x14]
add esp, 8
test al, al
je 0x4abcf8
mov eax, dword [0x94a790]
mov ecx, dword [eax + 0x20]
test ecx, ecx
je 0x4ac922
mov edx, dword [eax + 0x1c]
movq xmm0, qword [eax + 0x24]
lea esi, [eax + 0x1c]
mov dword [esp + 0xf0], 0x83745c
mov dword [esp + 0xf4], 1
mov dword [esp + 0x100], 0
mov dword [esp + 0xf8], 0x93d1f8
mov dword [esp + 0xfc], 0
mov dword [esp + 0xb0], edx
lea edx, [esp + 0x98]
mov dword [esp + 0xb4], ecx
movq qword [esp + 0xb8], xmm0
mov dword [esp + 0xc0], 0
mov dword [esp + 0x70], edx
lea edx, [esp + 0xb0]
mov dword [esp + 0x74], 1
mov dword [esp + 0x78], esi
lea esi, [esp + 0xf0]
mov dword [esp + 0x98], edx
lea edx, [esp + 0x70]
mov dword [esp + 0x9c], esi
mov dword [esp + 0xa0], 0x836938
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], eax
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 1
mov eax, dword [0x94bfb8]
cmp eax, 2
jne 0x4abcf8
cmp dword [0x94bcc0], 0
mov ebx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov esi, dword [0x94bcc8]
je 0x4abce4
mov eax, dword [esi + 8]
dec eax
and eax, 0xfffffff8
lea ebx, [eax + ebx + 8]
push edi
push ebx
call dword [esi + 0x28]
add esp, 8
test al, al
je 0x4abcf8
push edi
push ebx
call dword [esi + 0x2c]
add esp, 8
mov edx, dword [esp + 8]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0x14
mov dword [esp + 0x30], 0
lea ecx, [esp + 0xdc]
push edi
call fcn.004acf20
add esp, 4
movzx eax, byte [esp + 0xec]
cmp al, 2
mov byte [esp + 0x1f], al
je 0x4ac7c3
mov eax, dword [esp + 0xec]
movq xmm0, qword [esp + 0xdc]
movq xmm1, qword [esp + 0xe4]
mov dword [esp + 0xa8], eax
movq qword [esp + 0xa0], xmm1
movq qword [esp + 0x98], xmm0
mov eax, dword [0x94bccc]
cmp eax, 3
ja 0x4abf3b
movzx eax, byte [0x94a78c]
test al, al
je 0x4abf3b
movzx eax, al
cmp eax, 1
je 0x4abdb6
cmp eax, 2
je 0x4abdfa
mov ecx, 0x94a784
call fcn.007d3740
test al, al
je 0x4abf3b
movzx eax, al
cmp eax, 2
je 0x4abdfa
mov eax, dword [0x94a784]
mov ecx, dword [0x94bfb8]
cmp ecx, 2
jne 0x4abf3b
cmp dword [0x94bcc0], 0
mov edx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov ecx, dword [0x94bcc8]
je 0x4abdea
mov esi, dword [ecx + 8]
dec esi
and esi, 0xfffffff8
lea edx, [esi + edx + 8]
push eax
push edx
call dword [ecx + 0x14]
add esp, 8
test al, al
je 0x4abf3b
mov esi, dword [0x94a784]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x4ac936
mov ecx, dword [esi + 0x1c]
movq xmm0, qword [esi + 0x24]
lea ebx, [esi + 0x1c]
mov dword [esp + 0xb0], ecx
mov ecx, 0x8ad2d8
mov dword [esp + 0xb4], eax
movq qword [esp + 0xb8], xmm0
mov dword [esp + 0xc0], 0
call fcn.004ad170
mov dword [esp + 0x194], eax
lea eax, [esp + 0x194]
mov dword [esp + 0xf0], 0x83749c
mov dword [esp + 0xf4], 1
mov dword [esp + 0x100], 0
mov dword [esp + 0x198], edx
mov dword [esp + 0x18c], eax
lea eax, [esp + 0x18c]
mov dword [esp + 0x190], 0x41c480
mov dword [esp + 0xf8], eax
lea eax, [esp + 0x8c]
mov dword [esp + 0xfc], 1
mov dword [esp + 0x70], eax
lea eax, [esp + 0x70]
mov dword [esp + 0x74], 1
mov dword [esp + 0x78], ebx
mov dword [esp + 0x40], eax
lea eax, [esp + 0xb0]
mov dword [esp + 0x44], esi
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 1
mov dword [esp + 0x8c], eax
lea eax, [esp + 0xf0]
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], 0x836938
mov eax, dword [0x94bfb8]
cmp eax, 2
jne 0x4abf3b
cmp dword [0x94bcc0], 0
mov ebx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov esi, dword [0x94bcc8]
je 0x4abf27
mov eax, dword [esi + 8]
dec eax
and eax, 0xfffffff8
lea ebx, [eax + ebx + 8]
push edi
push ebx
call dword [esi + 0x28]
add esp, 8
test al, al
je 0x4abf3b
push edi
push ebx
call dword [esi + 0x2c]
add esp, 8
mov ecx, dword [esp + 0x9c]
mov eax, dword [esp + 0xa0]
mov edi, dword [esp + 8]
xor edx, edx
nop
cmp eax, edx
je 0x4abf87
movzx ebx, byte [ecx + edx]
inc edx
cmp bl, 9
je 0x4abf50
add bl, 0xe0
cmp bl, 0x5f
jb 0x4abf50
mov ecx, 0x93b384
mov edx, 0x2b
push 0x8374a4
push 0x835ff8
lea eax, [esp + 0xb8]
push eax
call fcn.007c1f60
mov dword [esp + 0xb0], 0x2c
mov dword [esp + 0xb4], ecx
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], 0
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], 1
mov dword [esp + 0xc8], 0x2c
mov dword [esp + 0xcc], 0
mov dword [esp + 0xd0], eax
mov word [esp + 0xd4], 1
jmp 0x4abff4
mov edi, dword [esp + 8]
lea ebx, [esp + 0xb0]
mov ecx, ebx
call fcn.004a97d0
test eax, eax
je 0x4ac7a0
mov ecx, eax
call fcn.005ad850
mov esi, edx
lea ecx, [esp + 0x30]
mov edx, eax
push 0x8ac350
lea eax, [esp + 0xf4]
push eax
push esi
call fcn.0049d8a0
add esp, 0xc
movzx eax, byte [esp + 0x38]
cmp al, 3
je 0x4abffb
mov ecx, dword [edi + 0x28]
mov dword [esp + 4], eax
test ecx, ecx
mov dword [esp + 0x28], ecx
je 0x4abff0
mov edi, dword [esp + 8]
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
mov ecx, dword [edi]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], esi
xor ecx, 2
or ecx, dword [edi + 4]
jne 0x4ac101
movdqu xmm0, xmmword [edi + 8]
mov ecx, dword [esp + 4]
lea eax, [esp + 0x60]
lea esi, [esp + 0x8c]
lea ebx, [esp + 0x30]
mov edx, esi
pshufd xmm1, xmm0, 0x44
pshufd xmm2, xmm0, 0xee
mov edi, ecx
pxor xmm1, xmmword [str.uespemosarenegylmodnarodsetybdet]
pxor xmm2, xmmword [0x7d4a40]
movdqu xmmword [esp + 0x30], xmm1
movdqu xmmword [esp + 0x40], xmm2
movdqu xmmword [esp + 0x50], xmm0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [eax + 0xc], 0
mov dword [eax + 8], 0
xor eax, eax
cmp cl, 2
mov ecx, ebx
setne al
mov dword [esp + 0x8c], eax
push 4
call fcn.00481c80
mov eax, edi
add esp, 4
cmp al, 2
jne 0x4ac13f
movzx eax, byte [esp + 0xc]
mov ecx, ebx
mov edx, esi
mov dword [esp + 0x8c], eax
push 4
jmp 0x4ac151
mov ebx, dword [esp + 4]
xor ecx, ecx
mov edx, 0x5635bc91
cmp bl, 2
setne cl
xor ecx, 0x84222325
mov eax, ecx
mul edx
cmp bl, 2
jne 0x4ac5f7
movzx ecx, byte [esp + 0xc]
xor ecx, eax
mov al, 2
imul ecx, ecx, 0xffffbc91
mov dword [esp + 4], eax
mov eax, ecx
jmp 0x4ac41a
test al, al
je 0x4ac6f6
mov edx, dword [esp + 0xc]
mov ecx, ebx
push dword [esp + 0x10]
call fcn.00481c80
add esp, 4
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x4c]
movdqu xmm0, xmmword [esp + 0x38]
movdqu xmm3, xmmword [esp + 0x30]
shl eax, 0x18
xor edx, ecx
movdqa xmm5, xmm0
or eax, dword [esp + 0x64]
movd xmm4, edx
movd xmm2, edx
psrlq xmm5, 0x33
xor esi, eax
movd xmm1, esi
punpckldq xmm2, xmm1
punpcklqdq xmm1, xmm4
punpcklqdq xmm2, xmm3
shufps xmm1, xmm0, 0xe2
movaps xmm4, xmm1
paddq xmm2, xmm0
psllq xmm1, 0x10
psllq xmm0, 0xd
pshufd xmm3, xmm2, 0xff
psrlq xmm4, 0x30
movsd xmm0, xmm1
movdqa xmm1, xmm2
movd edx, xmm3
movsd xmm5, xmm4
orpd xmm0, xmm5
movd xmm3, edx
shufps xmm1, xmm3, 0x4e
xorpd xmm0, xmm2
shufps xmm1, xmm2, 0x42
movapd xmm2, xmm0
movapd xmm3, xmm0
psrlq xmm2, 0x2b
psrlq xmm3, 0x2f
paddq xmm1, xmm0
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x11
movd esi, xmm1
psllq xmm2, 0x15
xor esi, ecx
movsd xmm0, xmm2
pshufd xmm2, xmm1, 0xff
movd edx, xmm2
pshufd xmm2, xmm1, 0x55
orpd xmm0, xmm3
movd xmm3, esi
movd edi, xmm2
xor edx, 0xff
xorpd xmm0, xmm1
xor edi, eax
movd xmm2, edx
movd xmm4, edi
shufpd xmm1, xmm2, 1
punpcklqdq xmm4, xmm3
movapd xmm3, xmm0
shufps xmm1, xmm0, 0xe2
shufps xmm3, xmm4, 0x24
movaps xmm4, xmm0
paddq xmm1, xmm3
psrlq xmm4, 0x33
pshufd xmm2, xmm1, 0xff
movd eax, xmm2
movaps xmm2, xmm0
psrlq xmm2, 0x30
movd xmm3, eax
movsd xmm4, xmm2
movaps xmm2, xmm0
psllq xmm0, 0xd
psllq xmm2, 0x10
movsd xmm0, xmm2
movdqa xmm2, xmm1
orpd xmm0, xmm4
shufps xmm2, xmm3, 0x4e
xorpd xmm0, xmm1
shufps xmm2, xmm1, 0x42
movapd xmm1, xmm0
movapd xmm3, xmm0
paddq xmm2, xmm0
psrlq xmm1, 0x2b
psrlq xmm3, 0x2f
movsd xmm3, xmm1
movdqa xmm1, xmm0
psllq xmm0, 0x11
psllq xmm1, 0x15
movsd xmm0, xmm1
pshufd xmm1, xmm2, 0xff
movd eax, xmm1
orpd xmm0, xmm3
movdqa xmm3, xmm2
movd xmm1, eax
xorpd xmm0, xmm2
shufps xmm3, xmm1, 0x4e
movapd xmm4, xmm0
shufps xmm3, xmm2, 0x42
psrlq xmm4, 0x33
paddq xmm3, xmm0
pshufd xmm1, xmm3, 0xff
movd eax, xmm1
movdqa xmm1, xmm0
psrlq xmm1, 0x30
movd xmm2, eax
movsd xmm4, xmm1
movdqa xmm1, xmm0
psllq xmm0, 0xd
psllq xmm1, 0x10
movsd xmm0, xmm1
movdqa xmm1, xmm3
orpd xmm0, xmm4
shufps xmm1, xmm2, 0x4e
xorpd xmm0, xmm3
shufps xmm1, xmm3, 0x42
movapd xmm2, xmm0
movapd xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x2b
psrlq xmm3, 0x2f
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x11
psllq xmm2, 0x15
movsd xmm0, xmm2
pshufd xmm2, xmm1, 0xff
orpd xmm0, xmm3
movd eax, xmm2
xorpd xmm0, xmm1
movd xmm3, eax
pshufd xmm2, xmm0, 0xff
movd eax, xmm2
pshufd xmm2, xmm0, 0xee
movd edx, xmm2
movapd xmm2, xmm1
shufpd xmm2, xmm3, 1
mov ecx, edx
shufps xmm2, xmm1, 0x42
shld ecx, eax, 0xd
shld eax, edx, 0xd
movd edx, xmm0
paddq xmm2, xmm0
pshufd xmm0, xmm0, 0x55
movd xmm1, ecx
movd esi, xmm0
movd xmm0, eax
shld esi, edx, 0x10
shl edx, 0x10
punpckldq xmm1, xmm0
movd xmm3, esi
movd xmm0, edx
punpckldq xmm0, xmm3
punpcklqdq xmm0, xmm1
pxor xmm0, xmm2
pshufd xmm1, xmm0, 0xee
paddq xmm1, xmm2
movdqa xmm2, xmm0
psrlq xmm0, 0x2f
psrlq xmm2, 0x2b
pshufd xmm0, xmm0, 0xee
movd eax, xmm1
pshufd xmm1, xmm1, 0x55
pxor xmm0, xmm2
movd ecx, xmm1
movd edx, xmm0
xor edx, ecx
xor edx, eax
mov eax, edx
mov edi, dword [esp + 8]
and eax, 0x7fff
mov ecx, dword [edi + 0x18]
mov edx, dword [edi + 0x24]
mov esi, dword [edi + 0x1c]
mov dword [esp + 0x2c], 0
mov ebx, eax
movzx eax, word [edi + 0x38]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x24], edx
mov dword [esp + 0x88], ecx
movzx eax, ax
and ebx, eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
neg eax
mov dword [esp + 0x84], eax
jmp 0x4ac46c
inc dword [esp + 0x2c]
mov ecx, dword [esp + 0x88]
inc ebx
mov eax, ebx
nop
mov ebx, eax
xor eax, eax
cmp ebx, esi
jae 0x4ac470
mov edi, ecx
movzx ecx, word [ecx + ebx*4]
cmp ecx, 0xffff
je 0x4abff0
movzx eax, word [edi + ebx*4 + 2]
mov edi, dword [esp + 0x20]
mov edx, ebx
mov dword [esp + 0x18], ecx
and edi, eax
sub edx, edi
and edx, dword [esp + 0x20]
cmp dword [esp + 0x2c], edx
ja 0x4abff0
cmp ax, word [esp + 0x14]
jne 0x4ac460
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
cmp edx, ecx
jbe 0x4ac8c2
mov edi, dword [esp + 0x24]
imul edx, ecx, 0x34
mov dword [esp + 0x188], edx
cmp dword [edi + edx + 0x20], 0
lea eax, [edi + edx + 0x20]
je 0x4ac517
cmp byte [esp + 4], 2
je 0x4ac460
cmp byte [esp + 4], 0
je 0x4ac531
mov ecx, dword [esp + 0x10]
cmp dword [eax + 8], ecx
jne 0x4ac460
push dword [esp + 0x10]
push dword [esp + 0x10]
push dword [eax + 4]
call fcn.007be090
add esp, 0xc
test eax, eax
jne 0x4ac460
jmp 0x4ac58b
cmp byte [esp + 4], 2
jne 0x4ac460
mov ecx, dword [esp + 0xc]
cmp byte [eax + 4], cl
jne 0x4ac460
jmp 0x4ac58b
mov ecx, dword [esp + 0x10]
cmp dword [eax + 8], ecx
jne 0x4ac460
mov eax, dword [eax + 4]
mov ecx, 0xffffffff
mov dword [esp + 0x184], eax
nop dword [eax]
mov eax, dword [esp + 0x84]
lea edx, [eax + ecx]
cmp edx, 0xffffffff
je 0x4ac58b
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x184]
movzx edx, byte [eax + ecx + 1]
movzx eax, byte [edx + 0x8ac350]
lea edx, [ecx + 1]
cmp al, byte [edi + ecx + 1]
mov ecx, edx
je 0x4ac550
cmp edx, dword [esp + 0x10]
jb 0x4ac460
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x188]
cmp dword [edx + eax], 0
je 0x4ac66b
add eax, edx
mov esi, dword [eax + 4]
mov eax, dword [esp + 0x28]
nop dword [eax]
lea ecx, [esp + 0x30]
push esi
push dword [esp + 0xdc]
push eax
call fcn.004ac950
add esp, 0xc
cmp dword [esp + 0x38], 0
je 0x4ac654
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x40]
push dword [esp + 0x48]
push dword [esp + 0x48]
lea ecx, [esp + 0x54]
push ecx
call dword [eax + 0xc]
add esp, 0xc
mov eax, dword [esp + 8]
mov edx, dword [eax + 0x24]
mov eax, dword [eax + 0x28]
jmp 0x4ac5b0
mov dword [esp + 0x14], eax
imul eax, ecx, 0x9ffaac08
mov edi, esi
test bl, bl
lea esi, [edx + eax - 0x3d29b2dc]
je 0x4ac73a
mov al, 1
test edi, edi
je 0x4ac785
mov dword [esp + 4], eax
mov ebx, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
nop dword [eax + eax]
movzx ecx, byte [ebx]
mov edx, 0x1b3
imul esi, esi, 0x1b3
inc ebx
xor ecx, eax
mov eax, ecx
shl ecx, 8
mul edx
add ecx, edx
add esi, ecx
dec edi
jne 0x4ac630
jmp 0x4ac416
mov eax, dword [esp + 0x40]
push dword [esp + 0x48]
push dword [esp + 0x48]
lea ecx, [esp + 0x54]
push ecx
call dword [eax + 0xc]
add esp, 0xc
mov edx, dword [esp + 8]
lea ecx, [esp + 0x30]
push dword [esp + 0x18]
push ebx
call fcn.004accd0
add esp, 8
lea ecx, [esp + 0x3c]
mov eax, dword [ecx + 0x10]
movq xmm0, qword [ecx]
movq xmm1, qword [ecx + 8]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x50]
movq qword [esp + 0x78], xmm1
movq qword [esp + 0x70], xmm0
test eax, eax
je 0x4ac6be
push dword [esp + 0x58]
push dword [esp + 0x58]
lea ecx, [esp + 0x64]
push ecx
call dword [eax + 0xc]
add esp, 0xc
cmp byte [esp + 0x80], 2
mov edi, dword [esp + 8]
lea ebx, [esp + 0xb0]
je 0x4abffb
mov eax, dword [esp + 0x70]
push dword [esp + 0x78]
push dword [esp + 0x78]
lea ecx, [esp + 0x84]
push ecx
call dword [eax + 0xc]
add esp, 0xc
jmp 0x4abffb
cmp dword [esp + 0x10], 0
lea ebx, [esp + 0x8c]
je 0x4ac159
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0xc]
movzx eax, byte [edi]
inc edi
lea ecx, [esp + 0x30]
mov edx, ebx
movzx eax, byte [eax + 0x8ac350]
mov byte [esp + 0x8c], al
push 1
call fcn.00481c80
add esp, 4
dec esi
jne 0x4ac710
jmp 0x4ac159
test edi, edi
je 0x4ac78b
mov ebx, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
nop word cs:[eax + eax]
mov edx, eax
movzx eax, byte [ebx]
imul esi, esi, 0x1b3
inc ebx
movzx ecx, byte [eax + 0x8ac350]
xor ecx, edx
mov edx, 0x1b3
mov eax, ecx
shl ecx, 8
mul edx
add ecx, edx
add esi, ecx
dec edi
jne 0x4ac750
mov dword [esp + 4], 0
jmp 0x4ac416
mov dword [esp + 4], eax
jmp 0x4ac793
mov dword [esp + 4], 0
mov edi, dword [esp + 8]
mov eax, dword [esp + 0x14]
jmp 0x4ac41a
mov ecx, dword [esp + 0x98]
lea eax, [esp + 0xa4]
push dword [esp + 0xa0]
push dword [esp + 0xa0]
push eax
call dword [ecx + 0xc]
add esp, 0xc
mov eax, dword [esp + 0x130]
test eax, eax
je 0x4ac7ea
lea ecx, [esp + 0x13c]
push dword [esp + 0x138]
push dword [esp + 0x138]
push ecx
call dword [eax + 0xc]
add esp, 0xc
mov eax, dword [esp + 0x140]
test eax, eax
je 0x4ac811
lea ecx, [esp + 0x14c]
push dword [esp + 0x148]
push dword [esp + 0x148]
push ecx
call dword [eax + 0xc]
add esp, 0xc
mov eax, dword [esp + 0x150]
test eax, eax
je 0x4ac838
lea ecx, [esp + 0x15c]
push dword [esp + 0x158]
push dword [esp + 0x158]
push ecx
call dword [eax + 0xc]
add esp, 0xc
mov eax, dword [esp + 0x160]
test eax, eax
je 0x4ac85f
lea ecx, [esp + 0x16c]
push dword [esp + 0x168]
push dword [esp + 0x168]
push ecx
call dword [eax + 0xc]
add esp, 0xc
mov eax, dword [esp + 0x170]
test eax, eax
je 0x4ac886
lea ecx, [esp + 0x17c]
push dword [esp + 0x178]
push dword [esp + 0x178]
push ecx
call dword [eax + 0xc]
add esp, 0xc
cmp byte [esp + 0x1f], 2
jne 0x4ac8ba
cmp byte [esp + 0xec], 2
je 0x4ac8ba
mov ecx, dword [esp + 0xdc]
lea eax, [esp + 0xe8]
push dword [esp + 0xe4]
push dword [esp + 0xe4]
push eax
call dword [ecx + 0xc]
add esp, 0xc
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x8ac1d0
call fcn.007c1be0
lea eax, [esp + 0xb0]
mov ecx, 0x93b384
mov edx, 0x2b
push 0x8373f4
push 0x835fd8
push eax
call fcn.007c1f60
lea eax, [esp + 0xb0]
mov ecx, 0x93b384
mov edx, 0x2b
push 0x837414
push 0x835fd8
push eax
call fcn.007c1f60
mov ecx, 0x8a6758
mov edx, 0x22
push 0x8374b4
call fcn.007c2000
mov ecx, 0x8a6758
mov edx, 0x22
push 0x837424
call fcn.007c2000
mov ecx, 0x8a6758
mov edx, 0x22
push 0x837464
call fcn.007c2000
int3