Function at 0x10005620
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xb0
push ebx
push ebp
push esi
push edi
mov edi, ecx
mov dword [esp + 0x48], 0
mov ebx, edx
xor esi, esi
imul ebp, ebx, 0x544
push 0x2c
mov eax, dword [edi]
mov ecx, dword [edi + 0x28]
mov dword [esp + 0x90], eax
mov eax, dword [edi + 0x24]
add ebp, edi
mov dword [esp + 0x84], ecx
push esi
mov dword [esp + 0x68], ebp
lea eax, [ecx + eax*4]
mov dword [esp + 0x98], eax
mov eax, dword [edi + 0xabc]
mov ecx, dword [eax + 0x28]
mov eax, 0x24924925
mul ecx
lea eax, [esp + 0x9c]
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 3
push eax
mov dword [esp + 0x88], ecx
call fcn.100fde00
mov eax, dword [ebp + 0x44]
add esp, 0xc
mov dword [ebp + 0x2c], esi
mov ecx, dword [edi + 0x18]
cdq
xor eax, edx
mov dword [esp + 0xb0], 0x7d00
sub eax, edx
mov byte [esp + 0x94], 0
mov edx, dword [edi + 0x1c]
lea ecx, [ecx + ecx*4]
shl ecx, 3
add ecx, edx
mov dword [esp + 0x74], eax
mov dword [esp + 0x88], eax
test ebx, ebx
jne 0x100056f7
cmp edx, ecx
jae 0x10005715
nop word [eax + eax]
movsx eax, word [edx + 0xc]
mov dword [edx + 0x18], eax
movsx eax, word [edx + 0xe]
mov dword [edx + 0x1c], eax
add edx, 0x28
cmp edx, ecx
jb 0x100056e0
jmp 0x10005715
cmp edx, ecx
jae 0x10005715
nop dword [eax + eax]
movsx eax, word [edx + 0xe]
mov dword [edx + 0x18], eax
movsx eax, word [edx + 0xc]
mov dword [edx + 0x1c], eax
add edx, 0x28
cmp edx, ecx
jb 0x10005700
mov eax, dword [esp + 0x80]
cmp eax, dword [esp + 0x90]
jae 0x10005faa
nop dword [eax]
mov ebx, dword [eax]
xor ecx, ecx
mov edx, 0xffff8300
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x40], ecx
xor ebp, ebp
mov ecx, 0x7d00
mov dword [esp + 0x34], edx
mov eax, dword [ebx + 0x24]
mov edi, edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x50], ecx
mov al, byte [eax + 3]
mov dword [esp + 0x38], edx
mov dword [esp + 0x54], ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], edx
movsx edx, al
mov ecx, edx
mov dword [esp + 0x3c], ebp
neg ecx
mov dword [esp + 0x24], 0x7d00
test al, al
mov dword [esp + 0x10], 0x7d00
mov dword [esp + 0x44], ebp
cmovns ecx, edx
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x70], ebp
cmp ecx, dword [esp + 0x74]
jne 0x100057e3
mov al, byte [ebx + 3]
movsx edx, al
mov ecx, edx
neg ecx
test al, al
cmovns ecx, edx
cmp ecx, dword [esp + 0x74]
jne 0x100057e3
mov dword [esp + 0x78], ebx
nop
mov ebx, dword [ebx + 0x24]
mov al, byte [ebx + 3]
movsx edx, al
mov ecx, edx
neg ecx
test al, al
cmovns ecx, edx
cmp ecx, dword [esp + 0x74]
jne 0x100057e0
cmp ebx, dword [esp + 0x78]
jne 0x100057c0
jmp 0x100057e3
mov ebx, dword [ebx + 0x20]
mov eax, dword [esp + 0x1c]
mov ecx, ebp
mov dword [esp + 0x78], ebx
mov byte [esp + 0x33], 0
movzx edx, ax
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x20], edx
test ecx, ecx
je 0x10005c47
mov ecx, dword [ebx + 0x18]
mov edx, ecx
cmp ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x20]
cmovge edx, dword [esp + 0x24]
cmp ecx, dword [esp + 0x34]
mov dword [esp + 0x24], edx
cmovle ecx, dword [esp + 0x34]
cmp dword [ebx + 0x1c], ebp
mov eax, ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x2c]
movzx eax, ax
mov dword [esp + 0x4c], edx
movzx edx, word [ebx]
mov ecx, edx
cmovge ecx, eax
movzx eax, cx
mov ecx, edx
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0x1c]
cmp eax, ebp
cmovge eax, ebp
cmp dword [ebx + 0x1c], edi
mov ebp, dword [esp + 0x44]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x40]
movzx eax, ax
cmovle ecx, eax
mov eax, dword [ebx + 0x1c]
cmp eax, edi
movzx ecx, cx
mov dword [esp + 0x20], ecx
cmovle eax, edi
mov edi, eax
test dl, 3
jne 0x100058a9
mov eax, dword [ebx + 0x1c]
cmp eax, dword [esp + 0x28]
cmovge eax, dword [esp + 0x28]
mov edx, eax
mov eax, dword [ebx + 0x1c]
mov dword [esp + 0x28], edx
cmp eax, dword [esp + 0x18]
jle 0x100058ad
mov dword [esp + 0x18], eax
mov dword [esp + 0x28], edx
jmp 0x100058ad
mov edx, dword [esp + 0x28]
movsx eax, byte [ebx + 3]
cmp eax, dword [esp + 0x88]
jne 0x100058d6
mov eax, dword [esp + 0x2c]
movzx ecx, cx
movzx eax, ax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x1c], eax
cmp ebx, dword [esp + 0x78]
jne 0x10005f7c
test ebp, ebp
je 0x10005b84
mov eax, dword [ebp + 0x28]
cmp dword [esi + 0x24], eax
jne 0x10005b84
mov al, byte [eax + 2]
cmp al, byte [ebx + 2]
jne 0x10005a19
mov edx, dword [esp + 0x50]
mov ecx, edx
cmp edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x6c]
cmovge ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x54]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x38]
mov esi, ecx
cmp ecx, dword [esp + 0x14]
movzx ecx, ax
cmovle esi, dword [esp + 0x14]
cmp edx, dword [esp + 0x10]
mov eax, dword [esp + 0x2c]
movzx eax, ax
cmovge ecx, eax
mov dword [esp + 0x34], esi
movzx edx, cx
mov ecx, dword [esp + 0x10]
mov eax, edx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x54]
cmp eax, ecx
cmovge eax, ecx
cmp dword [esp + 0x5c], edi
mov ecx, eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x10], ecx
movzx ecx, ax
mov eax, dword [esp + 0x20]
movzx eax, ax
cmovle ecx, eax
movzx eax, cx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x5c]
cmovle eax, edi
mov edi, eax
mov eax, dword [esp + 0x64]
cmp eax, ecx
cmovge eax, ecx
mov ecx, eax
mov eax, dword [esp + 0x68]
mov ebp, eax
mov dword [esp + 0x28], ecx
cmp ebp, dword [esp + 0x18]
mov ebp, dword [esp + 0x44]
cmovle eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x24]
add eax, esi
mov dword [ebp + 0x28], ebx
sar eax, 1
mov word [ebp + 2], ax
mov eax, esi
sub eax, dword [esp + 0x24]
sar eax, 1
mov word [ebp + 4], ax
mov al, byte [esp + 0x14]
or al, dl
test al, 3
je 0x100059d7
mov eax, dword [esp + 0x18]
sub eax, ecx
cmp eax, dword [esp + 0x7c]
jge 0x100059d7
or byte [ebp], 1
jmp 0x100059db
and byte [ebp], 0xfe
mov edx, dword [esp + 0x10]
movzx eax, di
mov word [ebp + 8], ax
movzx ecx, dx
sub eax, ecx
mov word [ebp + 6], cx
mov word [ebp + 0xa], ax
mov eax, dword [esp + 0x4c]
movzx esi, ax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], esi
movzx esi, ax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x40], esi
dec dword [eax + 0x2c]
mov eax, dword [esp + 0x1c]
jmp 0x10005c3d
mov eax, dword [esp + 0x5c]
sub eax, dword [esp + 0x54]
cdq
mov ecx, eax
mov eax, edi
sub eax, dword [esp + 0x10]
xor ecx, edx
sub ecx, edx
cdq
xor eax, edx
sub eax, edx
cmp ecx, eax
jle 0x10005a8e
mov ecx, dword [esp + 0x4c]
mov esi, dword [esp + 0x50]
cmp ecx, esi
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x38]
cmovl esi, ecx
cmp edx, eax
mov dword [esp + 0x50], esi
mov dword [esp + 0x24], ecx
mov ecx, edx
cmovg eax, edx
mov dword [ebp + 0x28], ebx
mov dword [esp + 0x38], eax
add eax, esi
sar eax, 1
mov word [ebp + 2], ax
mov eax, dword [esp + 0x38]
sub eax, esi
mov dword [esp + 0x34], ecx
sar eax, 1
mov word [ebp + 4], ax
mov eax, dword [esp + 0x20]
movzx esi, ax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x40], esi
jmp 0x10005b65
mov ecx, dword [esp + 0x50]
mov edx, ecx
cmp ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x14]
cmovge edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x38]
cmp ecx, eax
mov dword [esp + 0x24], edx
cmovle ecx, eax
mov dword [esi + 0x28], ebx
mov dword [esp + 0x34], ecx
lea eax, [ecx + edx]
sar eax, 1
mov word [esi + 2], ax
mov eax, ecx
sub eax, edx
sar eax, 1
mov word [esi + 4], ax
mov al, byte [esp + 0x20]
or al, byte [esp + 0x2c]
test al, 3
je 0x10005ae5
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x28]
cmp eax, dword [esp + 0x7c]
jge 0x10005ae5
or byte [esi], 1
mov eax, dword [esp + 0x10]
movzx ecx, ax
mov word [esi + 6], cx
movzx eax, di
mov word [esi + 8], ax
sub eax, ecx
mov word [esi + 0xa], ax
movups xmm0, xmmword [esi]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x38], ecx
movups xmmword [ebp], xmm0
mov dword [esp + 0x5c], edi
movups xmm0, xmmword [esi + 0x10]
movups xmmword [ebp + 0x10], xmm0
movq xmm0, qword [esi + 0x20]
movq qword [ebp + 0x20], xmm0
mov eax, dword [esi + 0x28]
mov dword [ebp + 0x28], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x2c]
movzx esi, ax
mov dword [esp + 0x6c], esi
mov esi, dword [esp + 0x20]
movzx edx, si
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x68], edx
movzx edx, si
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x10]
movzx eax, ax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x10], edx
dec dword [eax + 0x2c]
mov eax, dword [esp + 0x1c]
jmp 0x10005c3d
mov ecx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x14]
mov dword [esi + 0x28], ebx
lea eax, [ecx + ebp]
sar eax, 1
mov word [esi + 2], ax
mov eax, ebp
sub eax, ecx
sar eax, 1
mov word [esi + 4], ax
mov al, byte [esp + 0x20]
or al, byte [esp + 0x2c]
test al, 3
je 0x10005bbd
mov eax, dword [esp + 0x18]
sub eax, edx
cmp eax, dword [esp + 0x7c]
jge 0x10005bbd
or byte [esi], 1
mov eax, dword [esp + 0x10]
movzx ecx, ax
movzx eax, di
mov word [esi + 8], ax
sub eax, ecx
mov word [esi + 0xa], ax
mov eax, dword [esp + 0x4c]
mov word [esi + 6], cx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x44], esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
movzx esi, si
movzx eax, ax
mov dword [esp + 0x6c], esi
mov esi, dword [esp + 0x20]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x18]
movzx esi, si
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x10]
movzx eax, ax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x5c], edi
mov dword [esp + 0x70], esi
mov dword [esp + 0x34], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x3c], 0
xor esi, esi
mov ebp, dword [esp + 0x3c]
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x84], ebp
movzx ebp, cx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x2c], ebp
movzx ebp, cx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x20], ebp
mov ebp, dword [esp + 0x40]
movzx ebp, bp
movzx eax, ax
mov dword [esp + 0x4c], ebp
mov ebp, dword [esp + 0x44]
mov dword [esp + 0x14], eax
cmp ebx, dword [esp + 0x78]
jne 0x10005d32
cmp byte [esp + 0x33], 0
jne 0x10005f88
cmp dword [esp + 0x84], 0
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
movzx eax, ax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x4c]
movzx eax, cx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x20]
movzx ecx, ax
mov eax, dword [esp + 0x2c]
movzx eax, ax
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x10], edx
mov dword [esp + 0x44], ebp
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x68], eax
mov byte [esp + 0x33], 1
jne 0x10005f78
mov dl, byte [ebx + 3]
movsx ecx, dl
mov eax, ecx
mov byte [esp + 0x5b], dl
neg eax
test dl, dl
cmovns eax, ecx
cmp eax, dword [esp + 0x74]
je 0x10005d54
cmp ebx, dword [ebx + 0x24]
jne 0x10005f78
mov dword [esp + 0x88], ecx
xor esi, esi
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x48], 0
mov edx, dword [ecx + 0x2c]
cmp edx, 0x12
jge 0x10005d8c
cmp dword [ecx + 0x34], esi
jne 0x10005e94
lea eax, [ecx + 0x48]
mov dword [ecx + 0x30], 0x12
mov dword [ecx + 0x34], eax
jmp 0x10005e94
mov edi, dword [ecx + 0x30]
cmp edx, edi
jl 0x10005e94
cmp edi, 0x2e8ba2e
jge 0x10006009
mov eax, edi
lea ebp, [edi + 4]
sar eax, 2
add ebp, eax
cmp ebp, edi
jl 0x10005db9
cmp ebp, 0x2e8ba2e
jle 0x10005dbe
mov ebp, 0x2e8ba2e
mov eax, dword [ecx + 0x34]
lea edx, [ecx + 0x48]
cmp eax, edx
mov dword [esp + 0x14], esi
mov edx, 0x2c
jne 0x10005e2c
mov ecx, dword [esp + 0x8c]
lea eax, [esp + 0x14]
push eax
push 0
push ebp
push 0
call fcn.1000dac0
mov edx, dword [esp + 0x14]
mov edi, eax
mov dword [esp + 0x48], edx
test edx, edx
jne 0x10005e0f
test edi, edi
je 0x10005e0f
test ebp, ebp
jle 0x10005e0f
imul eax, ebp, 0x2c
push eax
push edx
push edi
call fcn.100fde00
mov edx, dword [esp + 0x54]
add esp, 0xc
mov eax, dword [esp + 0x60]
mov dword [eax + 0x34], edi
test edx, edx
jne 0x10006019
mov ecx, 0xc6
lea esi, [eax + 0x48]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
jmp 0x10005e8e
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x90]
push eax
push ebp
push edi
call fcn.1000dac0
mov edx, dword [esp + 0x14]
mov ecx, eax
mov dword [esp + 0x84], ecx
mov dword [esp + 0x48], edx
test edx, edx
jne 0x10005e78
test ecx, ecx
je 0x10005e78
cmp ebp, edi
jle 0x10005e78
mov eax, ebp
sub eax, edi
imul eax, eax, 0x2c
push eax
imul eax, edi, 0x2c
push edx
add eax, ecx
push eax
call fcn.100fde00
mov edx, dword [esp + 0x54]
add esp, 0xc
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x84]
mov dword [ecx + 0x34], eax
test edx, edx
jne 0x10006019
mov edx, dword [ecx + 0x2c]
mov dword [ecx + 0x30], ebp
imul esi, edx, 0x2c
lea eax, [edx + 1]
mov edx, dword [esp + 0x48]
mov dword [ecx + 0x2c], eax
add esi, dword [ecx + 0x34]
test edx, edx
jne 0x10006019
movups xmm0, xmmword [esp + 0x94]
mov ecx, dword [esp + 0x44]
lea ebp, [esi - 0x2c]
mov al, byte [esp + 0x5b]
test ecx, ecx
movups xmmword [esi], xmm0
cmove ebp, ecx
movups xmm0, xmmword [esp + 0xa4]
mov dword [esp + 0x44], ebp
movups xmmword [esi + 0x10], xmm0
movq xmm0, qword [esp + 0xb4]
movq qword [esi + 0x20], xmm0
mov byte [esi + 1], al
mov dword [esi + 0x24], ebx
mov dword [esi + 0x28], ebx
movzx eax, word [ebx]
mov edx, dword [ebx + 0x18]
mov ecx, eax
mov edi, dword [ebx + 0x1c]
mov dword [esp + 0x40], ecx
movzx ecx, cx
mov dword [esp + 0x34], edx
mov dword [esp + 0x24], edx
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], ecx
test al, 3
je 0x10005f27
mov ecx, 0x7d00
mov dword [esp + 0x18], 0xffff8300
mov dword [esp + 0x28], ecx
jmp 0x10005f31
mov eax, edi
mov dword [esp + 0x18], eax
mov dword [esp + 0x28], eax
mov ecx, 1
mov dword [esp + 0x3c], ecx
cmp ebx, dword [ebx + 0x24]
jne 0x10005f6c
mov word [esi + 2], dx
test byte [ebx], 3
je 0x10005f4a
or byte [esi], cl
movzx eax, word [ebx + 0x1c]
xor ecx, ecx
mov word [esi + 6], ax
movzx eax, word [ebx + 0x1c]
mov word [esi + 8], ax
xor eax, eax
mov word [esi + 0xa], ax
xor esi, esi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x44], ebp
mov eax, dword [esp + 0x1c]
mov ebx, dword [ebx + 0x20]
jmp 0x100057f2
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x3c]
mov ebx, dword [ebx + 0x20]
jmp 0x100057f2
mov eax, dword [esp + 0x80]
add eax, 4
mov dword [esp + 0x80], eax
cmp eax, dword [esp + 0x90]
jb 0x10005730
mov ebp, dword [esp + 0x60]
mov esi, dword [ebp + 0x34]
test esi, esi
je 0x1000604a
imul ecx, dword [ebp + 0x2c], 0x2c
lea eax, [ecx + esi]
cmp esi, eax
jae 0x1000604a
dec ecx
mov eax, 0xba2e8ba3
mul ecx
add esi, 0xa
mov ebx, edx
shr ebx, 5
inc ebx
mov eax, dword [esi + 0x1a]
mov edi, dword [esi + 0x1e]
mov edx, dword [eax + 0x1c]
mov eax, dword [eax + 0x24]
mov ecx, dword [edi + 0x1c]
mov eax, dword [eax + 0x1c]
cmp edx, ecx
jge 0x10006026
cmp eax, edx
jge 0x10005ff6
sub edx, eax
sar edx, 1
add word [esi], dx
mov eax, dword [edi + 0x20]
mov eax, dword [eax + 0x1c]
cmp eax, ecx
jle 0x10006042
sub eax, ecx
sar eax, 1
add word [esi], ax
jmp 0x10006042
pop edi
pop esi
pop ebp
mov eax, 0x40
pop ebx
add esp, 0xb0
ret
pop edi
pop esi
pop ebp
mov eax, edx
pop ebx
add esp, 0xb0
ret
cmp eax, edx
jle 0x10006031
sub eax, edx
sar eax, 1
add word [esi], ax
mov eax, dword [edi + 0x20]
mov eax, dword [eax + 0x1c]
cmp eax, ecx
jge 0x10006042
sub ecx, eax
sar ecx, 1
add word [esi], cx
add esi, 0x2c
sub ebx, 1
jne 0x10005fd5
mov eax, dword [esp + 0x48]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb0
ret