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

Disassembly:
sub esp, 0x7c
mov eax, dword [esp + 0x80]
push ebx
mov ebx, dword [eax + 4]
mov ecx, dword [ebx + 0xc]
mov dword [esp + 0x48], ecx
mov ecx, dword [eax]
mov dl, byte [ecx + 0x2c]
test dl, dl
push ebp
mov ebp, dword [eax + 8]
setne byte [esp + 0xb]
push esi
mov edx, ebp
sar edx, 0x1f
push edi
mov edi, dword [eax + 0x18]
mov eax, edx
xor eax, ebp
sub eax, edx
mov esi, edi
sar esi, 0x1f
mov edx, esi
xor edx, edi
sub edx, esi
cmp edx, eax
mov dword [esp + 0x34], edx
jg 0x300af65c
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x90]
mov edx, dword [eax + 0xc]
mov ecx, dword [eax + 0x1c]
mov eax, edx
sar eax, 0x1f
mov esi, eax
xor esi, edx
mov dword [esp + 0x58], edx
sub esi, eax
mov edx, ecx
sar edx, 0x1f
mov eax, edx
xor eax, ecx
sub eax, edx
cmp eax, esi
jg 0x300af689
mov eax, esi
cmp eax, 0x10000
jg 0x300af69e
cmp dword [esp + 0x34], 0x10000
jle 0x300afc31
mov edx, dword [esp + 0x90]
mov edx, dword [edx + 8]
mov esi, edx
sar esi, 0x1f
mov dword [esp + 0x80], edx
mov dword [esp + 0x5c], esi
xor esi, edx
mov edx, dword [esp + 0x5c]
mov eax, edi
sar eax, 0x1f
sub esi, edx
mov edx, eax
xor edx, edi
sub edx, eax
cmp esi, edx
jg 0x300af6da
mov eax, edi
sar eax, 0x1f
mov edx, eax
xor edx, edi
jmp 0x300af6e3
mov eax, ebp
sar eax, 0x1f
mov edx, eax
xor edx, ebp
mov edi, dword [esp + 0x58]
mov esi, ecx
sar esi, 0x1f
sub edx, eax
mov ebp, esi
mov eax, edi
sar eax, 0x1f
xor ebp, ecx
sub ebp, esi
mov esi, eax
xor esi, edi
sub esi, eax
cmp ebp, esi
mov dword [esp + 0x3c], edx
jg 0x300af712
mov eax, edi
sar eax, 0x1f
mov esi, eax
xor esi, edi
jmp 0x300af71b
mov eax, ecx
sar eax, 0x1f
mov esi, eax
xor esi, ecx
mov ecx, dword [ebx + 0x18]
sub esi, eax
mov eax, dword [ebx + 4]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x90]
mov eax, dword [eax]
mov dword [esp + 0x4c], ecx
mov ecx, dword [eax + 0x4c]
movzx eax, word [ecx]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x98]
xor ebx, ebx
cmp eax, ebx
mov dword [esp + 0x38], esi
je 0x300afc31
mov dword [esp + 0x5c], eax
jmp 0x300af763
mov esi, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
xor ebx, ebx
mov ecx, dword [esp + 0x94]
mov eax, dword [ecx]
mov edi, eax
sar edi, 0x10
add edx, eax
mov dword [esp + 0x34], edi
mov edi, edx
sar edi, 0x10
mov dword [esp + 0x30], edi
sar eax, 8
or edi, 0xffffffff
sub edi, eax
mov eax, dword [ecx + 4]
and edi, 0xff
movzx edx, dh
mov dword [esp + 0x6c], edi
mov edi, eax
or ecx, 0xffffffff
mov dword [esp + 0x70], edx
lea edx, [eax + esi]
sar eax, 8
sub ecx, eax
and ecx, 0xff
sar edi, 0x10
mov esi, edx
sar esi, 0x10
movzx eax, dh
mov dword [esp + 0x74], ecx
xor ecx, ecx
cmp edi, esi
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], esi
mov dword [esp + 0x78], eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x18], edi
jg 0x300afadc
lea esp, [esp]
mov eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x14], eax
jg 0x300afa12
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x90]
and eax, 1
mov dword [esp + 0x64], eax
mov eax, dword [edx + 4]
mov ebx, dword [eax + 0x10]
mov dword [esp + 0x68], eax
mov eax, dword [eax + 0x14]
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x2c], eax
lea esp, [esp]
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
xor esi, esi
xor bp, bp
test edi, edi
mov dword [esp + 0x86], esi
mov edi, edx
je 0x300af872
test edi, edi
jge 0x300af854
xor edx, edx
mov edi, dword [esp + 0x18]
test edi, edi
jge 0x300af85e
xor eax, eax
cmp edx, ebx
jl 0x300af865
lea edx, [ebx - 1]
mov edi, dword [esp + 0x2c]
cmp eax, edi
jl 0x300af8a6
lea eax, [edi - 1]
jmp 0x300af8a6
test edi, edi
jge 0x300af87a
add edx, ebx
js 0x300af876
cmp edx, ebx
jl 0x300af886
mov edi, edi
sub edx, ebx
cmp edx, ebx
jge 0x300af880
mov edi, dword [esp + 0x18]
test edi, edi
mov edi, dword [esp + 0x2c]
jge 0x300af896
add eax, edi
js 0x300af892
cmp eax, edi
jl 0x300af8a6
lea ebx, [ebx]
sub eax, edi
cmp eax, edi
jge 0x300af8a0
imul eax, dword [esp + 0x4c]
add eax, dword [esp + 0x50]
mov edi, dword [esp + 0x54]
sub edi, 3
je 0x300af91a
dec edi
je 0x300af8e5
dec edi
jne 0x300af94b
mov eax, dword [eax + edx*4]
mov edx, eax
shr edx, 0x10
movzx di, dl
mov esi, eax
mov edx, eax
shr esi, 0x18
shr edx, 8
movzx dx, dl
movzx bp, al
jmp 0x300af95b
movzx eax, word [eax + edx*2]
mov ecx, eax
mov edx, eax
shr edx, 5
shr ecx, 0xa
and ecx, 0x1f
mov di, word [ecx*4 + 0x3029ad88]
and edx, 0x1f
mov dx, word [edx*4 + 0x3029ad88]
and eax, 0x1f
mov bp, word [eax*4 + 0x3029ad88]
mov si, 0xff
jmp 0x300af96c
mov esi, dword [esp + 0x68]
mov esi, dword [esi + 8]
test esi, esi
je 0x300af92a
add esi, 4
jmp 0x300af92c
xor esi, esi
movzx eax, byte [eax + edx]
movzx di, byte [esi + eax*4 + 2]
movzx dx, byte [esi + eax*4 + 1]
movzx bp, byte [esi + eax*4]
lea eax, [esi + eax*4]
movzx si, byte [eax + 3]
jmp 0x300af95b
mov dx, word [esp + 0x86]
mov di, word [esp + 0x88]
test si, si
jne 0x300af96c
mov al, byte [esp + 0x13]
test al, al
je 0x300af9fd
mov eax, dword [esp + 0x14]
cmp eax, dword [esp + 0x34]
jne 0x300af97c
mov eax, dword [esp + 0x6c]
jmp 0x300af98b
cmp eax, dword [esp + 0x30]
mov eax, dword [esp + 0x70]
je 0x300af98b
mov eax, 0x100
mov ecx, dword [esp + 0x18]
cmp ecx, dword [esp + 0x48]
jne 0x300af99c
imul eax, dword [esp + 0x74]
jmp 0x300af9ac
cmp ecx, dword [esp + 0x44]
jne 0x300af9a9
imul eax, dword [esp + 0x78]
jmp 0x300af9ac
shl eax, 8
mov ebx, dword [esp + 0x24]
movzx ecx, di
mov edi, dword [esp + 0x20]
sar eax, 8
imul ecx, eax
movzx edx, dx
imul edx, eax
add edi, ecx
add ebx, edx
movzx ecx, bp
movzx edx, si
imul ecx, eax
mov esi, dword [esp + 0x1c]
imul edx, eax
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x28]
add edi, ecx
mov ecx, dword [esp + 0x40]
add esi, edx
add ecx, eax
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x7c]
mov dword [esp + 0x28], edi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x30]
inc eax
cmp eax, edx
mov dword [esp + 0x14], eax
jle 0x300af830
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x44]
inc eax
cmp eax, edx
mov dword [esp + 0x18], eax
jle 0x300af7f0
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x300afab7
mov esi, dword [esp + 0x9c]
xor edx, edx
cmp ecx, 0x10000
jae 0x300afa85
mov eax, 0x1000000
div ecx
mov ecx, eax
imul ecx, dword [esp + 0x20]
shr ecx, 0x18
mov word [esi + 4], cx
mov edx, eax
imul edx, dword [esp + 0x24]
mov ecx, eax
imul eax, dword [esp + 0x1c]
imul ecx, dword [esp + 0x28]
shr edx, 0x18
shr ecx, 0x18
shr eax, 0x18
mov word [esi + 2], dx
mov word [esi], cx
mov word [esi + 6], ax
jmp 0x300afbf8
mov eax, dword [esp + 0x20]
div ecx
xor edx, edx
mov word [esi + 4], ax
mov eax, dword [esp + 0x24]
div ecx
xor edx, edx
mov word [esi + 2], ax
mov eax, dword [esp + 0x28]
div ecx
xor edx, edx
mov word [esi], ax
mov eax, dword [esp + 0x1c]
div ecx
mov word [esi + 6], ax
jmp 0x300afbf8
test ecx, ecx
je 0x300afadc
mov al, byte [esp + 0x13]
test al, al
je 0x300afadc
mov esi, dword [esp + 0x9c]
mov dword [esi], 0
mov dword [esi + 4], 0
jmp 0x300afbf8
mov edx, dword [esp + 0x34]
test edx, edx
mov eax, dword [esp + 0x48]
mov edi, dword [esp + 0x90]
jge 0x300afaf3
xor edx, edx
jmp 0x300afb00
mov ecx, dword [edi + 4]
mov ecx, dword [ecx + 0x10]
cmp edx, ecx
jl 0x300afb00
lea edx, [ecx - 1]
test eax, eax
jge 0x300afb08
xor eax, eax
jmp 0x300afb15
mov ecx, dword [edi + 4]
mov ecx, dword [ecx + 0x14]
cmp eax, ecx
jl 0x300afb15
lea eax, [ecx - 1]
imul eax, dword [esp + 0x4c]
add eax, dword [esp + 0x50]
mov esi, dword [esp + 0x54]
sub esi, 3
je 0x300afbb7
dec esi
je 0x300afb6e
dec esi
mov esi, dword [esp + 0x9c]
jne 0x300afbf8
mov eax, dword [eax + edx*4]
mov edx, eax
shr edx, 0x18
mov ecx, eax
shr ecx, 0x10
mov word [esi + 6], dx
movzx dx, cl
mov ecx, eax
shr ecx, 8
mov word [esi + 4], dx
movzx dx, cl
movzx ax, al
mov word [esi + 2], dx
mov word [esi], ax
jmp 0x300afbf8
movzx eax, word [eax + edx*2]
mov esi, dword [esp + 0x9c]
mov ecx, eax
shr ecx, 0xa
and ecx, 0x1f
mov word [esi + 6], 0xff
mov dx, word [ecx*4 + 0x3029ad88]
mov ecx, eax
shr ecx, 5
and ecx, 0x1f
mov word [esi + 4], dx
mov dx, word [ecx*4 + 0x3029ad88]
and eax, 0x1f
mov word [esi + 2], dx
mov ax, word [eax*4 + 0x3029ad88]
mov word [esi], ax
jmp 0x300afbf8
mov ecx, dword [edi + 4]
mov ecx, dword [ecx + 8]
test ecx, ecx
je 0x300afbc6
add ecx, 4
jmp 0x300afbc8
xor ecx, ecx
movzx edx, byte [eax + edx]
mov esi, dword [esp + 0x9c]
lea eax, [ecx + edx*4]
movzx cx, byte [eax + 3]
mov word [esi + 6], cx
movzx dx, byte [eax + 2]
mov word [esi + 4], dx
movzx cx, byte [eax + 1]
mov word [esi + 2], cx
movzx dx, byte [eax]
mov word [esi], dx
mov eax, dword [esp + 0x94]
mov edx, dword [eax]
mov ecx, dword [esp + 0x80]
add edx, ecx
mov ecx, dword [eax + 4]
mov dword [eax], edx
mov edx, dword [esp + 0x58]
add ecx, edx
mov dword [eax + 4], ecx
mov eax, dword [esp + 0x5c]
add esi, 8
dec eax
mov dword [esp + 0x9c], esi
mov dword [esp + 0x5c], eax
jne 0x300af759
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret