Function at 0x10049590
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, 0xfffffff0
sub esp, 0x240
mov eax, dword [edx + 0x58]
mov dword [esp + 0x5c], ecx
mov byte [esp + 0xf], 2
test byte [eax + 0x1c], 1
jne 0x1004a41a
cmp byte [edx + 0x3c], 3
lea ecx, [edx + 0x30]
mov eax, 0x10129d80
cmovne eax, ecx
cmp byte [eax + 0xc], 2
jne 0x100498c4
movzx eax, byte [edx + 0x44]
cmp al, 2
je 0x100495de
and al, 1
je 0x1004a41a
movzx eax, byte [edx + 0x42]
movdqa xmm0, xmmword [0x10119530]
cmp dword [ebp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 4
mov dword [esp + 0x220], edx
mov dword [esp + 0x18], 0
movdqu xmmword [esp + 0x70], xmm0
mov byte [esp + 0x2c], al
mov byte [esp + 0x80], 0
je 0x100498f7
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
lea eax, [ecx + eax*4]
mov esi, ecx
mov dword [esp + 0x60], eax
jmp 0x10049651
mov esi, dword [esp + 0x28]
add esi, 4
cmp esi, dword [esp + 0x60]
je 0x100498f7
lea ecx, [esp + 0x118]
lea edx, [esp + 0x70]
push dword [esi]
call fcn.10080540
add esp, 4
cmp dword [esp + 0x118], 0x80000000
mov dword [esp + 0x28], esi
jne 0x100496d0
mov esi, dword [esp + 0x10]
cmp esi, 0x80000000
je 0x10049746
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
test ebx, ebx
mov dword [esp + 8], eax
je 0x10049730
mov eax, dword [esp + 8]
lea edi, [eax + 4]
jmp 0x100496b6
add edi, 0x10
dec ebx
je 0x10049730
cmp dword [edi - 4], 0
je 0x100496b0
push dword [edi]
push 0
push dword [0x101990e0]
call dword [sym.imp.kernel32.dll_HeapFree]
jmp 0x100496b0
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x11c]
mov ebx, dword [esp + 0x120]
mov dword [esp + 0x120], 0
cmp eax, 0x80000000
jne 0x100497c0
test ebx, ebx
je 0x1004974e
add edi, 4
jmp 0x10049716
add edi, 0x10
dec ebx
je 0x1004974e
cmp dword [edi - 4], 0
je 0x10049710
push dword [edi]
push 0
push dword [0x101990e0]
call dword [sym.imp.kernel32.dll_HeapFree]
jmp 0x10049710
test esi, esi
je 0x10049746
push dword [esp + 8]
push 0
push dword [0x101990e0]
call dword [sym.imp.kernel32.dll_HeapFree]
mov dword [esp + 0x10], 0x80000000
mov esi, dword [esp + 0x118]
cmp esi, 0x80000000
je 0x10049640
mov ebx, dword [esp + 0x120]
mov eax, dword [esp + 0x11c]
test ebx, ebx
mov dword [esp + 8], eax
je 0x100497a0
mov eax, dword [esp + 8]
lea edi, [eax + 4]
jmp 0x10049786
add edi, 0x10
dec ebx
je 0x100497a0
cmp dword [edi - 4], 0
je 0x10049780
push dword [edi]
push 0
push dword [0x101990e0]
call dword [sym.imp.kernel32.dll_HeapFree]
jmp 0x10049780
test esi, esi
je 0x10049640
push dword [esp + 8]
push 0
push dword [0x101990e0]
call dword [sym.imp.kernel32.dll_HeapFree]
jmp 0x10049640
mov edx, dword [esp + 0x18]
sub eax, edx
cmp ebx, eax
ja 0x100498ae
test ebx, ebx
je 0x1004985f
mov esi, dword [esp + 0x14]
mov ecx, edx
shl ebx, 4
shl ecx, 4
lea eax, [edi + ebx]
add ebx, 0xfffffff0
mov dword [esp + 0x40], eax
lea esi, [esi + ecx + 8]
lea ecx, [edi + 0x10]
add edi, 0x14
nop word cs:[eax + eax]
mov eax, dword [ecx - 0x10]
cmp eax, 0x80000000
je 0x1004987f
mov dword [esp + 8], edx
mov edx, dword [ecx - 0xc]
mov dword [esp + 0x24], ebx
mov ebx, dword [ecx - 4]
add edi, 0x10
mov dword [esp + 0x30], edx
mov edx, dword [ecx - 8]
mov dword [esi - 8], eax
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
mov dword [esp + 0x20], edx
mov edx, dword [esp + 8]
add ebx, 0xfffffff0
mov dword [esi - 4], eax
mov eax, dword [esp + 0x20]
inc edx
mov dword [esi], eax
mov eax, dword [esp + 0x1c]
mov dword [esi + 4], eax
lea eax, [ecx - 0x10]
add esi, 0x10
add ecx, 0x10
add eax, 0x10
cmp eax, dword [esp + 0x40]
jne 0x10049800
mov dword [esp + 0x18], edx
cmp dword [esp + 0x10], 0x80000000
je 0x1004974e
lea ecx, [esp + 0x10]
call fcn.10060090
jmp 0x1004974e
cmp dword [esp + 0x40], ecx
mov dword [esp + 0x18], edx
je 0x10049863
shr ebx, 4
jmp 0x10049896
add edi, 0x10
dec ebx
je 0x10049863
cmp dword [edi - 4], 0
je 0x10049890
push dword [edi]
push 0
push dword [0x101990e0]
call dword [sym.imp.kernel32.dll_HeapFree]
jmp 0x10049890
lea ecx, [esp + 0x10]
push ebx
call fcn.10111cc0
add esp, 4
mov edx, dword [esp + 0x18]
jmp 0x100497d6
mov esi, dword [eax]
mov ecx, dword [eax + 4]
mov dword [esp + 0x28], ecx
mov dword [esp + 8], esi
lock inc dword [esi]
jle 0x1004ad78
movzx ecx, byte [eax + 0xc]
mov eax, dword [eax + 8]
mov byte [esp + 0xf], cl
mov dword [esp + 0x60], eax
lock inc dword [edx]
jg 0x1004a423
jmp 0x1004ad78
cmp byte [esp + 0x2c], 0
je 0x10049b8d
mov esi, dword [esp + 0x10]
cmp esi, 0x80000000
je 0x1004a3a7
mov eax, dword [esp + 0x18]
test eax, eax
mov dword [esp + 0x20], eax
je 0x10049aa5
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
mov ecx, dword [ebx + 8]
cmp eax, 1
je 0x10049a9d
lea edi, [eax + 0xfffffff]
xor edx, edx
mov eax, edi
and eax, 0xfffffff
cmp eax, 8
jb 0x10049a7a
movd xmm0, ecx
and edi, 7
mov edx, eax
pshufd xmm1, xmm0, 0
movdqa xmm0, xmmword [0x101192d0]
sub edx, edi
mov dword [esp + 8], edi
lea edi, [ebx + 0x88]
mov ecx, edx
movdqa xmm2, xmm1
movd xmm3, dword [edi - 0x40]
movd xmm5, dword [edi - 0x50]
movd xmm4, dword [edi - 0x70]
movd xmm6, dword [edi - 0x20]
movdqa xmm7, xmm1
pxor xmm1, xmm0
punpckldq xmm5, xmm3
movd xmm3, dword [edi - 0x60]
punpckldq xmm4, xmm3
movd xmm3, dword [edi]
punpcklqdq xmm4, xmm5
movd xmm5, dword [edi - 0x10]
punpckldq xmm5, xmm3
movd xmm3, dword [edi - 0x30]
sub edi, 0xffffff80
add ecx, 0xfffffff8
punpckldq xmm3, xmm6
movdqa xmm6, xmm4
pxor xmm6, xmm0
punpcklqdq xmm3, xmm5
pcmpgtd xmm6, xmm1
pand xmm7, xmm6
pandn xmm6, xmm4
movdqa xmm4, xmm2
pxor xmm2, xmm0
movdqa xmm1, xmm6
movdqa xmm6, xmm3
pxor xmm6, xmm0
por xmm1, xmm7
pcmpgtd xmm6, xmm2
pand xmm4, xmm6
pandn xmm6, xmm3
movdqa xmm2, xmm6
por xmm2, xmm4
jne 0x10049976
movdqa xmm4, xmm1
movdqa xmm3, xmm2
cmp dword [esp + 8], 0
pxor xmm4, xmm0
pxor xmm3, xmm0
pcmpgtd xmm3, xmm4
pand xmm1, xmm3
pandn xmm3, xmm2
por xmm3, xmm1
pshufd xmm2, xmm3, 0xee
movdqa xmm4, xmm3
movdqa xmm1, xmm2
pxor xmm4, xmm0
pxor xmm1, xmm0
pcmpgtd xmm1, xmm4
pand xmm3, xmm1
pandn xmm1, xmm2
por xmm1, xmm3
movdqa xmm3, xmm1
pshufd xmm2, xmm1, 0x55
pxor xmm3, xmm0
pxor xmm0, xmm2
pcmpgtd xmm0, xmm3
pand xmm1, xmm0
pandn xmm0, xmm2
por xmm0, xmm1
movd ecx, xmm0
je 0x10049a9d
sub eax, edx
shl edx, 4
lea edx, [edx + ebx + 0x18]
nop word cs:[eax + eax]
nop dword [eax]
mov edi, dword [edx]
cmp ecx, edi
cmovae ecx, edi
add edx, 0x10
dec eax
jne 0x10049a90
test ecx, ecx
je 0x10049d14
lea ecx, [esp + 0x10]
call fcn.10082b00
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
cmp ebx, 0x80000000
je 0x10049e44
test edx, edx
je 0x10049e44
mov esi, dword [esp + 0x14]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x30], edx
shl edx, 4
mov dword [esp + 0x28], edx
mov edi, dword [esi + 8]
mov ebx, dword [esi + 4]
lea eax, [esi + edx]
xor edx, edx
mov dword [esp + 8], esi
mov dword [esp + 0x24], eax
mov eax, 1
mov dword [esp + 0x1c], edi
jmp 0x10049b09
mov edi, ecx
xor eax, eax
mov dl, 1
test ecx, ecx
je 0x10049ddd
test dl, 1
je 0x10049b1d
mov edx, dword [esp + 8]
cmp edx, dword [esp + 0x24]
jne 0x10049b37
jmp 0x10049d85
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 8]
sub ecx, edx
shr ecx, 4
cmp ecx, eax
jbe 0x10049d85
shl eax, 4
add edx, eax
mov eax, edx
mov edx, dword [esp + 0x1c]
cmp edi, edx
ja 0x1004ad89
mov ecx, dword [eax + 8]
cmp ecx, edi
cmovb edi, ecx
test edi, edi
je 0x10049dd7
mov edx, dword [eax + 4]
add eax, 0x10
xor ecx, ecx
mov dword [esp + 8], eax
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx eax, byte [edx + ecx]
cmp al, byte [ebx + ecx]
jne 0x10049afb
inc ecx
cmp edi, ecx
jne 0x10049b70
mov ecx, edi
xor eax, eax
mov dl, 1
test ecx, ecx
jne 0x10049b09
jmp 0x10049ddd
cmp dword [esp + 0x10], 0x80000000
je 0x1004a413
mov ebx, dword [esp + 0x18]
cmp ebx, 2
jb 0x10049d77
mov ecx, dword [esp + 0x14]
cmp ebx, 0x15
jae 0x10049d70
shl ebx, 4
lea eax, [ecx + 0x10]
mov esi, ecx
mov dword [esp + 0x40], 0
mov dword [esp + 0x2c], ecx
add ebx, ecx
mov dword [esp + 0x60], ebx
jmp 0x10049c1e
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x60]
mov dword [edx], eax
mov eax, dword [esp + 0x24]
mov dword [edx + 4], eax
mov eax, dword [esp + 0x20]
mov dword [edx + 8], eax
movzx eax, byte [esp + 0x30]
mov byte [edx + 0xc], al
movzx eax, word [esp + 0x118]
mov word [edx + 0xd], ax
movzx eax, byte [esp + 0x11a]
mov byte [edx + 0xf], al
add dword [esp + 0x40], 0xfffffff0
lea eax, [ecx + 0x10]
mov esi, ecx
cmp eax, ebx
je 0x10049d77
mov edx, dword [esi + 0x18]
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0x14]
mov edi, edx
mov dword [esp + 0x20], edx
sub edi, eax
cmovb eax, edx
push eax
push dword [esi + 4]
mov dword [esp + 0x2c], ecx
push ecx
call fcn.10100b6a
add esp, 0xc
movzx ecx, byte [esi + 0x1c]
test eax, eax
cmovne edi, eax
xor eax, eax
mov byte [esp + 0x30], cl
sub cl, byte [esi + 0xc]
cmp cl, 0xff
sete al
xor ecx, ecx
test edi, edi
sets cl
cmove ecx, eax
cmp cl, 1
mov ecx, dword [esp + 0x1c]
jne 0x10049c0c
mov eax, dword [esi + 0x10]
mov edi, ecx
mov dword [esp + 0x28], eax
movzx eax, byte [esi + 0x1f]
mov byte [esp + 0x11a], al
movzx eax, word [esi + 0x1d]
mov esi, dword [esp + 0x40]
mov word [esp + 0x118], ax
nop word cs:[eax + eax]
movq xmm0, qword [edi - 0x10]
movq xmm1, qword [edi - 8]
test esi, esi
movq qword [edi + 8], xmm1
movq qword [edi], xmm0
je 0x10049bd1
lea eax, [edi - 0x10]
mov edx, dword [esp + 0x20]
mov dword [esp + 8], eax
mov eax, dword [edi - 0x18]
mov ebx, edx
sub ebx, eax
cmovb eax, edx
push eax
push dword [edi - 0x1c]
push dword [esp + 0x2c]
call fcn.10100b6a
mov edx, dword [esp + 0x14]
add esp, 0xc
test eax, eax
cmovne ebx, eax
movzx eax, byte [esp + 0x30]
xor ecx, ecx
sub al, byte [edi - 0x14]
mov edi, edx
cmp al, 0xff
sete cl
xor eax, eax
test ebx, ebx
sets al
cmove eax, ecx
mov ecx, dword [esp + 0x1c]
add esi, 0x10
test al, al
jne 0x10049ca0
jmp 0x10049bd5
mov dword [esp + 8], esi
mov dword [esp + 0x1c], ebx
lea edi, [ebx + 4]
mov ebx, dword [sym.imp.kernel32.dll_HeapFree]
mov esi, dword [esp + 0x20]
jmp 0x10049d36
add edi, 0x10
dec esi
je 0x10049d4a
cmp dword [edi - 4], 0
je 0x10049d30
push dword [edi]
push 0
push dword [0x101990e0]
call ebx
jmp 0x10049d30
cmp dword [esp + 8], 0
je 0x10049d63
push dword [esp + 0x1c]
push 0
push dword [0x101990e0]
call dword [sym.imp.kernel32.dll_HeapFree]
mov dword [esp + 0x10], 0x80000000
jmp 0x1004a3a7
mov edx, ebx
call fcn.100601d0
lea ecx, [esp + 0x10]
call fcn.10060090
jmp 0x1004a3a7
mov edx, dword [esp + 0x1c]
cmp edi, edx
ja 0x1004adbe
cmp dword [esp + 0x20], 2
jb 0x10049ddb
lea eax, [edi - 1]
cmp eax, 2
ja 0x10049ddb
movzx eax, byte [ebx]
cmp byte [eax + str.743210_._g], 0xc7
mov eax, edi
ja 0x10049ddd
mov eax, dword [esp + 0x30]
add esi, 8
shl eax, 4
jmp 0x10049dc6
add esi, 0x10
add eax, 0xfffffff0
je 0x10049ffa
cmp dword [esi], 2
jb 0x10049dba
mov byte [esi + 4], 0
mov dword [esi], 1
jmp 0x10049dba
xor eax, eax
jmp 0x10049ddd
mov eax, edi
mov edi, eax
mov edx, dword [esp + 0x30]
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x28]
mov ecx, esi
nop dword [eax]
test eax, eax
je 0x10049e09
add eax, 0xfffffff0
cmp byte [ecx + 0xc], 0
lea ecx, [ecx + 0x10]
jne 0x10049df0
mov eax, edi
cmp edi, 1
ja 0x10049e1a
jmp 0x10049e44
mov eax, edi
cmp edi, 4
ja 0x10049e1a
cmp eax, 2
jb 0x10049e44
cmp edx, 0x11
jb 0x10049e44
add esi, 8
shl edx, 4
jmp 0x10049e38
add esi, 0x10
add edx, 0xfffffff0
je 0x10049e52
cmp dword [esi], eax
jbe 0x10049e30
mov byte [esi + 4], 0
mov dword [esi], eax
jmp 0x10049e30
cmp ebx, 0x80000000
je 0x1004a3a7
jmp 0x10049e8f
lea ecx, [esp + 0x10]
call fcn.10060090
mov ebx, dword [esp + 0x10]
cmp ebx, 0x80000000
je 0x1004ad95
mov eax, dword [esp + 0x18]
cmp eax, 1
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc0], 1
jne 0x1004ada0
mov edx, 1
mov edi, dword [esp + 0x14]
mov eax, edx
shl eax, 4
mov ecx, edi
nop word [eax + eax]
test eax, eax
je 0x10049eb7
add eax, 0xfffffff0
cmp byte [ecx + 0xc], 0
lea ecx, [ecx + 0x10]
jne 0x10049ea0
mov esi, 0x80000001
jmp 0x10049eea
mov esi, edx
mov edx, edi
lea ecx, [esp + 0x118]
push esi
call fcn.10081c90
mov edx, esi
add esp, 4
mov eax, dword [esp + 0x11c]
mov ecx, dword [esp + 0x120]
mov esi, dword [esp + 0x118]
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], ecx
cmp edx, 0xb
jb 0x1004a060
add edi, 8
shl edx, 4
jmp 0x10049f08
add edi, 0x10
add edx, 0xfffffff0
je 0x10049f19
cmp dword [edi], 6
jb 0x10049f00
mov byte [edi + 4], 0
mov dword [edi], 5
jmp 0x10049f00
lea ecx, [esp + 0x10]
call fcn.10082b00
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
cmp ebx, 0x80000000
je 0x1004a060
cmp edx, 0xa
jbe 0x1004a060
add edi, 8
shl edx, 4
jmp 0x10049f53
add edi, 0x10
add edx, 0xfffffff0
je 0x10049f64
cmp dword [edi], 5
jb 0x10049f4b
mov byte [edi + 4], 0
mov dword [edi], 4
jmp 0x10049f4b
lea ecx, [esp + 0x10]
call fcn.10082b00
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
cmp ebx, 0x80000000
je 0x1004a060
cmp edx, 0x41
jb 0x1004a060
add edi, 8
shl edx, 4
jmp 0x10049f9e
add edi, 0x10
add edx, 0xfffffff0
je 0x10049faf
cmp dword [edi], 4
jb 0x10049f96
mov byte [edi + 4], 0
mov dword [edi], 3
jmp 0x10049f96
lea ecx, [esp + 0x10]
call fcn.10082b00
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
cmp ebx, 0x80000000
je 0x1004a060
cmp edx, 0x41
jb 0x1004a060
add edi, 8
shl edx, 4
jmp 0x10049fe9
add edi, 0x10
add edx, 0xfffffff0
je 0x1004a008
cmp dword [edi], 3
jb 0x10049fe1
mov byte [edi + 4], 0
mov dword [edi], 2
jmp 0x10049fe1
lea ecx, [esp + 0x10]
call fcn.10060090
jmp 0x1004a3a7
lea ecx, [esp + 0x10]
call fcn.10082b00
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
cmp ebx, 0x80000000
je 0x1004a060
cmp edx, 0xb
jb 0x1004a060
add edi, 8
shl edx, 4
jmp 0x1004a03a
add edi, 0x10
add edx, 0xfffffff0
je 0x1004a04b
cmp dword [edi], 2
jb 0x1004a032
mov byte [edi + 4], 0
mov dword [edi], 1
jmp 0x1004a032
lea ecx, [esp + 0x10]
call fcn.10082b00
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
cmp ebx, 0x80000000
mov dword [esp + 8], 0x80000000
je 0x1004a11a
test edx, edx
je 0x1004a0ab
mov eax, edx
xor ecx, ecx
mov dword [esp + 0x30], edx
shl eax, 4
jmp 0x1004a09c
mov edx, dword [edi + ecx + 4]
movzx edx, byte [edx]
cmp byte [edx + str.743210_._g], 0xf9
ja 0x1004a0bd
add ecx, 0x10
cmp eax, ecx
je 0x1004a0b3
mov edx, dword [edi + ecx + 8]
cmp edx, 1
je 0x1004a085
test edx, edx
jne 0x1004a095
jmp 0x1004a0bf
xor edx, edx
mov dword [esp + 8], ebx
jmp 0x1004a11a
mov edx, dword [esp + 0x30]
mov dword [esp + 8], ebx
jmp 0x1004a11a
xor edx, edx
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x40], ebx
sub esi, edx
shl edx, 4
lea ebx, [edx + edi + 4]
jmp 0x1004a0dc
add ebx, 0x10
dec esi
je 0x1004a0f4
cmp dword [ebx - 4], 0
je 0x1004a0d6
push dword [ebx]
push 0
push dword [0x101990e0]
call dword [sym.imp.kernel32.dll_HeapFree]
jmp 0x1004a0d6
cmp dword [esp + 0x40], 0
je 0x1004a10a
push edi
push 0
push dword [0x101990e0]
call dword [sym.imp.kernel32.dll_HeapFree]
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x20]
mov dword [esp + 0x10], 0x80000000
cmp esi, 0x80000001
je 0x1004a3a7
cmp dword [esp + 8], 0x80000000
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0xc0], esi
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], ecx
jne 0x1004a16c
mov eax, dword [esp + 0xc8]
movq xmm0, qword [esp + 0xc0]
mov dword [esp + 0x18], eax
movq qword [esp + 0x10], xmm0
jmp 0x1004a3a7
test edx, edx
je 0x1004a186
mov esi, dword [edi + 8]
cmp edx, 1
jne 0x1004a1db
cmp esi, 2
jbe 0x1004a33b
jmp 0x1004a39b
mov eax, dword [esp + 0xc8]
movsd xmm0, qword [esp + 0xc0]
mov dword [esp + 0x120], eax
movsd qword [esp + 0x118], xmm0
cmp dword [esp + 8], 0
je 0x1004a1bc
push edi
push 0
push dword [0x101990e0]
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [esp + 0x120]
movq xmm0, qword [esp + 0x118]
mov dword [esp + 0x18], eax
movq qword [esp + 0x10], xmm0
jmp 0x1004a3a7
mov dword [esp + 0x30], edx
add edx, 0xfffffff
xor ecx, ecx
mov eax, edx
and eax, 0xfffffff
cmp eax, 8
jb 0x1004a31c
movd xmm0, esi
and edx, 7
mov ecx, eax
lea esi, [edi + 0x88]
pshufd xmm1, xmm0, 0
movdqa xmm0, xmmword [0x101192d0]
sub ecx, edx
mov ebx, ecx
movdqa xmm2, xmm1
movd xmm3, dword [esi - 0x40]
movd xmm5, dword [esi - 0x50]
movd xmm4, dword [esi - 0x70]
movd xmm6, dword [esi - 0x20]
movdqa xmm7, xmm1
pxor xmm1, xmm0
punpckldq xmm5, xmm3
movd xmm3, dword [esi - 0x60]
punpckldq xmm4, xmm3
movd xmm3, dword [esi]
punpcklqdq xmm4, xmm5
movd xmm5, dword [esi - 0x10]
punpckldq xmm5, xmm3
movd xmm3, dword [esi - 0x30]
sub esi, 0xffffff80
add ebx, 0xfffffff8
punpckldq xmm3, xmm6
movdqa xmm6, xmm4
pxor xmm6, xmm0
punpcklqdq xmm3, xmm5
pcmpgtd xmm6, xmm1
pand xmm7, xmm6
pandn xmm6, xmm4
movdqa xmm4, xmm2
pxor xmm2, xmm0
movdqa xmm1, xmm6
movdqa xmm6, xmm3
pxor xmm6, xmm0
por xmm1, xmm7
pcmpgtd xmm6, xmm2
pand xmm4, xmm6
pandn xmm6, xmm3
movdqa xmm2, xmm6
por xmm2, xmm4
jne 0x1004a21b
movdqa xmm4, xmm1
movdqa xmm3, xmm2
test edx, edx
pxor xmm4, xmm0
pxor xmm3, xmm0
pcmpgtd xmm3, xmm4
pand xmm1, xmm3
pandn xmm3, xmm2
por xmm3, xmm1
pshufd xmm2, xmm3, 0xee
movdqa xmm4, xmm3
movdqa xmm1, xmm2
pxor xmm4, xmm0
pxor xmm1, xmm0
pcmpgtd xmm1, xmm4
pand xmm3, xmm1
pandn xmm1, xmm2
por xmm1, xmm3
movdqa xmm3, xmm1
pshufd xmm2, xmm1, 0x55
pxor xmm3, xmm0
pxor xmm0, xmm2
pcmpgtd xmm0, xmm3
pand xmm1, xmm0
pandn xmm0, xmm2
por xmm0, xmm1
movd esi, xmm0
je 0x1004a332
sub eax, ecx
shl ecx, 4
lea ecx, [ecx + edi + 0x18]
mov edx, dword [ecx]
cmp esi, edx
cmovae esi, edx
add ecx, 0x10
dec eax
jne 0x1004a325
cmp esi, 3
jae 0x1004a386
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0xc8]
movsd xmm0, qword [esp + 0xc0]
lea esi, [edi + 4]
mov dword [esp + 0x120], eax
movsd qword [esp + 0x118], xmm0
jmp 0x1004a36a
add esi, 0x10
dec edx
je 0x1004a1a6
cmp dword [esi - 4], 0
je 0x1004a360
push dword [esi]
push 0
push dword [0x101990e0]
mov ebx, edx
call dword [sym.imp.kernel32.dll_HeapFree]
mov edx, ebx
jmp 0x1004a360
cmp dword [esp + 0x30], 0x40
jbe 0x1004a39b
lea ecx, [esp + 0x10]
call fcn.10082d50
jmp 0x1004a14d
lea ecx, [esp + 0xc0]
call fcn.10082d50
mov eax, dword [esp + 0x10]
cmp eax, 0x80000000
je 0x1004a413
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
test ebx, ebx
mov dword [esp + 8], ecx
je 0x1004a3fa
mov eax, dword [esp + 8]
mov esi, dword [sym.imp.kernel32.dll_HeapFree]
lea edi, [eax + 4]
jmp 0x1004a3e6
add edi, 0x10
dec ebx
je 0x1004a3fa
cmp dword [edi - 4], 0
je 0x1004a3e0
push dword [edi]
push 0
push dword [0x101990e0]
call esi
jmp 0x1004a3e0
cmp dword [esp + 0x1c], 0
je 0x1004a413
push dword [esp + 8]
push 0
push dword [0x101990e0]
call dword [sym.imp.kernel32.dll_HeapFree]
mov edx, dword [esp + 0x220]
lock inc dword [edx]
jle 0x1004ad78
cmp byte [esp + 0xf], 2
mov al, 2
je 0x1004a43e
mov eax, dword [esp + 8]
lock inc dword [eax]
movzx eax, byte [esp + 0xf]
jle 0x1004ad78
mov dword [esp + 0x10], edx
mov byte [esp + 0x1c], al
cmp byte [edx + 0x40], 0
je 0x1004a456
movzx eax, byte [edx + 0x41]
mov byte [esp + 0x24], al
jmp 0x1004a45b
mov byte [esp + 0x24], 0xa
movzx eax, byte [edx + 0x43]
mov ecx, 1
mov esi, 0xa00000
cmp al, 2
cmove eax, ecx
mov dword [esp + 0x20], eax
mov eax, dword [edx + 0x10]
cmp eax, 2
je 0x1004a484
mov esi, dword [edx + 0x14]
xor ecx, ecx
test eax, eax
setne cl
movzx eax, byte [edx + 0x4a]
mov dword [esp + 0x30], esi
lea esi, [esp + 0x70]
mov dword [esp + 0x40], ecx
xor ebx, ebx
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 4
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 4
mov dword [esp + 0x84], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa8], 4
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 1
mov dword [esp + 0xbc], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], 4
mov dword [esp + 0x90], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0x98], 4
mov dword [esp + 0x9c], 0
mov ecx, esi
cmp al, 3
cmovne ebx, eax
call fcn.1004ba80
pxor xmm0, xmm0
mov byte [esp + 0x128], 1
mov dword [esp + 0x129], 0x2020202
mov word [esp + 0x12d], 0x202
mov byte [esp + 0x12f], 0xa
mov dword [esp + 0x130], 0xfa
mov word [esp + 0x134], 0
mov byte [esp + 0x136], 0
mov dword [esp + 0x138], 0
mov dword [esp + 0x13c], 0
mov dword [esp + 0x144], 0
mov dword [esp + 0x14c], 0
mov dword [esp + 0x150], 4
mov dword [esp + 0x154], 0
mov dword [esp + 0x158], 0
mov dword [esp + 0x15c], 4
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
mov dword [esp + 0x168], 4
mov word [esp + 0x174], 0
lea edi, [esp + 0x1a0]
mov ecx, 0x14
lea edx, [esp + 0x118]
movq qword [esp + 0x16c], xmm0
mov byte [esp + 0x176], 0xa
mov dword [esp + 0x178], 0
mov dword [esp + 0x17c], 0
mov dword [esp + 0x180], 4
mov dword [esp + 0x184], 0
mov dword [esp + 0x188], 0x2710
mov word [esp + 0x18c], 0
mov dword [esp + 0x190], 0
mov dword [esp + 0x194], 4
mov dword [esp + 0x198], 0
mov dword [esp + 0x19c], 0
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0x1f0], 0
mov dword [esp + 0x1f4], 0
mov dword [esp + 0x1f8], 4
mov dword [esp + 0x1fc], 0
mov dword [esp + 0x200], 0x3e8
mov word [esp + 0x204], 0
lea ecx, [esp + 0xc0]
mov eax, dword [esp + 0x40]
mov dword [esp + 0x118], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x11c], eax
movzx eax, byte [esp + 0x24]
mov byte [esp + 0x120], 1
mov byte [esp + 0x121], al
mov eax, dword [esp + 0x20]
mov byte [esp + 0x122], al
mov word [esp + 0x123], 2
mov byte [esp + 0x125], bl
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.1004bba0
add esp, 8
mov eax, dword [esp + 0xc0]
cmp eax, 0x2a
jne 0x1004aaa6
mov eax, dword [esp + 0xc4]
lea ecx, [esp + 0x118]
mov dword [esp + 0x24], eax
call fcn.1004eb70
cmp byte [esp + 0x1c], 2
je 0x1004a7a5
mov eax, dword [esp + 8]
lock inc dword [eax]
jle 0x1004ad78
mov eax, dword [esp + 0x10]
lea esi, [esp + 0x70]
mov ebx, 1
mov ecx, esi
movzx eax, byte [eax + 0x42]
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 4
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 4
mov dword [esp + 0x84], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa8], 4
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 1
mov dword [esp + 0xbc], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], 4
mov dword [esp + 0x90], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0x98], 4
mov dword [esp + 0x9c], 0
cmp al, 2
cmovne ebx, eax
call fcn.1004ba80
pxor xmm0, xmm0
mov word [esp + 0x12d], 0x202
mov dword [esp + 0x129], 0x2020202
mov word [esp + 0x174], 0
lea edi, [esp + 0x1a0]
mov ecx, 0x14
movq qword [esp + 0x16c], xmm0
mov dword [esp + 0x118], 2
mov byte [esp + 0x120], 0
mov dword [esp + 0x122], 0x3020202
mov byte [esp + 0x128], 1
mov byte [esp + 0x12f], 0xa
mov dword [esp + 0x130], 0xfa
mov word [esp + 0x134], 0
mov byte [esp + 0x136], 0
mov dword [esp + 0x138], 0
mov dword [esp + 0x13c], 0
mov dword [esp + 0x144], 0
mov dword [esp + 0x14c], 0
mov dword [esp + 0x150], 4
mov dword [esp + 0x154], 0
mov dword [esp + 0x158], 0
mov dword [esp + 0x15c], 4
mov dword [esp + 0x160], 0
mov dword [esp + 0x164], 0
mov dword [esp + 0x168], 4
mov byte [esp + 0x176], 0xa
mov dword [esp + 0x178], 0
mov dword [esp + 0x17c], 0
mov dword [esp + 0x180], 4
mov dword [esp + 0x184], 0
mov dword [esp + 0x188], 0x2710
mov word [esp + 0x18c], 0
mov dword [esp + 0x190], 0
mov dword [esp + 0x194], 4
mov dword [esp + 0x198], 0
mov dword [esp + 0x19c], 0
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0x1f0], 0
mov dword [esp + 0x1f4], 0
mov dword [esp + 0x1f8], 4
mov dword [esp + 0x1fc], 0
mov dword [esp + 0x200], 0x3e8
mov word [esp + 0x204], 0
mov dword [esp + 0x20], ebx
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
mov dword [esp + 0x208], ecx
mov dword [esp + 0x20c], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x210], eax
movzx eax, byte [esp + 0x1c]
mov byte [esp + 0x214], al
mov byte [esp + 0x218], bl
lock inc dword [esi]
jle 0x1004ad78
cmp al, 2
jne 0x1004ac64
lea ecx, [esp + 0x118]
call fcn.1004eb70
mov bl, 2
jmp 0x1004acc6
movss xmm0, dword [esp + 0xc8]
mov ebx, dword [esp + 0xf0]
mov edx, dword [esp + 0xc4]
movzx esi, byte [esp + 0xe3]
movzx edi, word [esp + 0xe1]
mov dword [esp + 0x24], eax
movaps xmmword [esp + 0x60], xmm0
movsd xmm0, qword [esp + 0xd0]
mov ecx, ebx
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0xfc]
shl esi, 0x10
shr ecx, 0x10
mov dword [esp + 0x2c], ecx
mov ecx, ebx
shr ecx, 0x18
movaps xmmword [esp + 0x30], xmm0
movss xmm0, dword [esp + 0xdc]
mov dword [esp + 0x114], ecx
mov ecx, dword [esp + 0xd8]
mov dword [esp + 0x238], edx
mov edx, dword [esp + 0xcc]
movaps xmmword [esp + 0x40], xmm0
movsd xmm0, qword [esp + 0xe4]
mov dword [esp + 0x10c], ecx
mov ecx, dword [esp + 0xec]
mov dword [esp + 0x108], edx
movzx edx, byte [esp + 0xe0]
movaps xmmword [esp + 0x220], xmm0
movsd xmm0, qword [esp + 0xf4]
mov dword [esp + 0x110], ecx
lea ecx, [esp + 0x118]
mov dword [esp + 0x104], edx
movsd qword [esp + 0x230], xmm0
call fcn.1004eb70
cmp byte [esp + 0x1c], 2
mov ecx, dword [esp + 8]
je 0x1004aba1
lock dec dword [ecx]
jne 0x1004aba1
mov edx, dword [esp + 0x28]
call fcn.10016270
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x10]
or edi, esi
lock dec dword [eax]
jne 0x1004abb9
lea ecx, [esp + 0x10]
call fcn.1004add0
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x24]
movaps xmm0, xmmword [esp + 0x60]
shl edi, 8
mov esi, dword [esp + 0x238]
add edi, dword [esp + 0x104]
mov dword [edx], 1
mov dword [edx + 8], eax
mov eax, dword [esp + 0x20]
mov dword [edx + 0xc], eax
movss dword [edx + 0x10], xmm0
mov eax, dword [esp + 0x108]
movaps xmm0, xmmword [esp + 0x30]
mov dword [edx + 0x14], eax
movlps qword [edx + 0x18], xmm0
mov eax, dword [esp + 0x10c]
movaps xmm0, xmmword [esp + 0x40]
mov dword [edx + 0x20], eax
movss dword [edx + 0x24], xmm0
movaps xmm0, xmmword [esp + 0x220]
mov eax, dword [esp + 0x110]
mov dword [edx + 0x28], edi
movlps qword [edx + 0x2c], xmm0
mov dword [edx + 0x34], eax
mov eax, dword [esp + 0x2c]
mov byte [edx + 0x38], bl
mov byte [edx + 0x39], bh
movq xmm0, qword [esp + 0x230]
mov byte [edx + 0x3a], al
mov eax, dword [esp + 0x114]
mov byte [edx + 0x3b], al
mov dword [edx + 0x44], esi
movq qword [edx + 0x3c], xmm0
cmp byte [esp + 0xf], 2
jne 0x1004ad62
jmp 0x1004ad70
lock inc dword [ecx]
jle 0x1004ad78
mov eax, dword [esp + 0x208]
movzx ebx, byte [esp + 0x214]
mov edi, dword [esp + 0x210]
lock dec dword [eax]
jne 0x1004ac9b
mov ecx, dword [esp + 0x208]
mov edx, dword [esp + 0x20c]
call fcn.10016270
lea ecx, [esp + 0x118]
call fcn.1004eb70
mov ecx, dword [esp + 8]
lock inc dword [ecx]
jle 0x1004ad78
mov dword [esp + 0x40], edi
lock dec dword [ecx]
jne 0x1004acc6
mov edx, dword [esp + 0x28]
call fcn.10016270
mov byte [esp + 0x30], bl
mov edi, dword [esp + 0x10]
xor ecx, ecx
mov edx, 0x40
movzx eax, byte [0x10199148]
call fcn.100ea7d0
test eax, eax
je 0x1004ad7a
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x60]
mov dword [eax], 1
mov dword [eax + 4], 1
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], ebx
movzx ebx, byte [esp + 0x1c]
mov byte [eax + 0x14], bl
mov dword [eax + 0x18], esi
mov dword [eax + 0x1c], ecx
mov dword [eax + 0x20], edx
mov edx, dword [esp + 0x40]
movzx ebx, byte [esp + 0x20]
mov dword [eax + 0x24], edx
movzx edx, byte [esp + 0x30]
mov byte [eax + 0x28], dl
mov dword [eax + 0x2c], ebx
mov dword [eax + 0x30], 0
mov dword [eax + 0x34], edi
mov dword [eax + 0x38], esi
mov esi, dword [esp + 0x5c]
mov dword [eax + 0x3c], 0
mov dword [esi + 4], eax
mov dword [esi + 8], 0x10129d9c
mov dword [esi], 2
cmp byte [esp + 0xf], 2
je 0x1004ad70
lock dec dword [ecx]
jne 0x1004ad70
mov edx, dword [esp + 0x28]
call fcn.10016270
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
ud2
mov ecx, 4
mov edx, 0x40
call fcn.1010cb80
mov ecx, edi
push 0x1012d464
call fcn.1010d040
mov dword [esp + 0xc0], 0
lea ecx, [esp + 0xc0]
lea edx, [esp + 0x118]
mov dword [esp + 0x118], 0
call fcn.10112a70
mov ecx, edi
push 0x1012d454
call fcn.1010d040
int3