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

Disassembly:
sub esp, 0x50
mov eax, dword [esp + 0x94]
mov dword [esp + 0x48], 0
test eax, eax
jl 0x51132c
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x68]
push ebx
inc eax
push ebp
push esi
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x64]
push edi
mov edx, dword [esp + 0x74]
mov esi, dword [esp + 0x58]
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0xa4]
cmp esi, edx
jne 0x510b8b
mov edx, dword [esp + 0xa0]
test edx, edx
je 0x510b8b
mov edx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x7c]
jmp 0x510b96
mov edx, dword [esp + 0x70]
mov ebp, dword [esp + 0x80]
mov esi, dword [esp + 0x98]
test esi, esi
je 0x510c48
xor ebx, ebx
xor esi, esi
mov bl, byte [ecx]
mov si, word [eax]
mov edi, ebx
mov ebx, dword [esp + 0x7c]
imul esi, edi
inc ecx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x94]
add ecx, ecx
add eax, ecx
mov dword [esp + 0x18], eax
xor eax, eax
mov al, byte [ebx]
inc ebx
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x78], eax
xor eax, eax
mov ax, word [ebx]
mov dword [esp + 0x1c], eax
lea eax, [ecx + ebx]
mov dword [esp + 0x20], eax
xor eax, eax
mov al, byte [ebp]
xor ebx, ebx
mov bx, word [edx]
add edi, eax
imul ebx, eax
add esi, ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x10], ebx
imul ebx, dword [esp + 0x78]
mov eax, dword [esp + 0x78]
mov dword [esp + 0x10], ebx
shl ebx, 3
sub ebx, esi
inc ebp
shl eax, 3
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x78]
sub eax, edi
add edi, ebx
mov ebx, dword [esp + 0x10]
add edx, ecx
add esi, ebx
mov dword [esp + 0x24], edx
mov dword [esp + 0x44], edi
mov dword [esp + 0x40], esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], edi
jmp 0x510d4d
xor ebx, ebx
xor esi, esi
mov bl, byte [ecx]
mov si, word [eax]
mov edi, ebx
mov ebx, dword [esp + 0x7c]
imul esi, edi
inc ecx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x94]
add ecx, ecx
add eax, ecx
mov dword [esp + 0x18], eax
xor eax, eax
mov al, byte [ebx]
mov ebx, dword [esp + 0x6c]
add edi, eax
mov dword [esp + 0x78], eax
xor eax, eax
mov ax, word [ebx]
imul eax, dword [esp + 0x78]
add esi, eax
mov eax, dword [esp + 0x7c]
lea ebx, [eax + 1]
mov eax, dword [esp + 0x6c]
add eax, ecx
mov dword [esp + 0x20], eax
xor eax, eax
mov al, byte [ebp]
add edi, eax
mov dword [esp + 0x28], edi
xor edi, edi
mov di, word [edx]
add edx, ecx
imul edi, eax
add esi, edi
xor eax, eax
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x14]
inc ebp
mov al, byte [esi]
xor esi, esi
mov edi, eax
mov eax, dword [esp + 0x18]
mov si, word [eax]
mov eax, dword [esp + 0x14]
imul esi, edi
inc eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
add eax, ecx
mov dword [esp + 0x18], eax
xor eax, eax
mov al, byte [ebx]
inc ebx
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x78], eax
xor eax, eax
mov ax, word [ebx]
add ebx, ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ebx
xor eax, eax
xor ebx, ebx
mov al, byte [ebp]
mov bx, word [edx]
imul ebx, eax
add esi, ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x10], ebx
imul ebx, dword [esp + 0x78]
add edi, eax
mov eax, dword [esp + 0x78]
shl eax, 3
add edx, ecx
inc ebp
sub eax, edi
mov dword [esp + 0x10], ebx
mov dword [esp + 0x24], edx
shl ebx, 3
sub ebx, esi
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x78]
add edi, ebx
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x10]
add esi, edi
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x14]
xor ebx, ebx
mov bl, byte [esi]
xor esi, esi
mov edi, ebx
mov ebx, dword [esp + 0x18]
mov si, word [ebx]
mov ebx, dword [esp + 0x14]
imul esi, edi
inc ebx
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x18]
add ebx, ecx
mov dword [esp + 0x18], ebx
xor ebx, ebx
mov bl, byte [ebp]
mov dword [esp + 0x48], ebx
add edi, ebx
xor ebx, ebx
mov bx, word [edx]
mov edx, dword [esp + 0x24]
imul ebx, dword [esp + 0x48]
add edx, ecx
add esi, ebx
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x30]
xor ebx, ebx
inc ebp
mov bl, byte [edx]
inc edx
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x50], ebp
xor ebp, ebp
mov bp, word [edx]
add edx, ecx
mov dword [esp + 0x20], edx
lea edx, [ebx*8]
sub edx, edi
add edi, ebx
mov dword [esp + 0x54], edx
mov edx, ebp
imul edx, ebx
mov dword [esp + 0x5c], edx
sub eax, edi
shl edx, 3
sub edx, esi
mov dword [esp + 0x38], ebp
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x5c]
add esi, edx
mov edx, dword [esp + 0x28]
sub eax, edx
mov edx, dword [esp + 0x78]
add eax, edx
test eax, eax
mov dword [esp + 0x34], eax
jle 0x511036
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x3c]
sub eax, esi
sub eax, edx
add eax, ebp
mov ebp, dword [esp + 0x1c]
cdq
idiv dword [esp + 0x34]
sub eax, ebp
lea edx, [eax + ebp]
cmp edx, 0xffff
jle 0x510e2e
mov eax, 0xffff
sub eax, ebp
jmp 0x510e36
test edx, edx
jge 0x510e36
mov eax, ebp
neg eax
mov edx, dword [esp + 0xb0]
cmp eax, edx
jle 0x510e62
sub eax, edx
imul eax, dword [esp + 0xac]
cdq
and edx, 0xff
add eax, edx
mov edx, dword [esp + 0x64]
sar eax, 8
add eax, ebp
mov word [edx], ax
jmp 0x510e7a
neg edx
cmp eax, edx
jge 0x510e73
mov edx, dword [esp + 0xb0]
add eax, edx
jmp 0x510e43
mov eax, dword [esp + 0x64]
mov word [eax], bp
mov edx, dword [esp + 0x64]
lea eax, [ecx + edx]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x74]
test eax, eax
je 0x510efb
mov eax, dword [esp + 0x78]
mov ebp, dword [esp + 0x34]
sub ebp, eax
lea edx, [eax + ebp]
cmp edx, 0xff
jle 0x510eab
mov ebp, 0xff
sub ebp, eax
jmp 0x510eb3
test edx, edx
jge 0x510eb3
mov ebp, eax
neg ebp
mov edx, dword [esp + 0xb0]
cmp ebp, edx
jle 0x510ec4
mov eax, ebp
sub eax, edx
jmp 0x510ed3
neg edx
cmp ebp, edx
jge 0x510eed
mov eax, dword [esp + 0xb0]
add eax, ebp
imul eax, dword [esp + 0xac]
cdq
and edx, 0xff
add eax, edx
mov dl, byte [esp + 0x78]
sar eax, 8
add al, dl
mov edx, dword [esp + 0x74]
mov byte [edx], al
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x68], eax
mov ebp, dword [esp + 0x38]
mov eax, dword [esp + 0x98]
test eax, eax
jne 0x510f1a
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x54]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xa8]
cmp eax, 1
mov dword [esp + 0x44], edi
mov dword [esp + 0x40], esi
mov dword [esp + 0x34], edx
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x78], ebx
jle 0x511170
dec eax
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x14]
xor edx, edx
xor esi, esi
xor ebx, ebx
mov dl, byte [eax]
xor ebp, ebp
mov edi, edx
mov edx, dword [esp + 0x18]
mov si, word [edx]
add edx, ecx
imul esi, edi
inc eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x50]
mov bl, byte [eax]
inc eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x20]
mov bp, word [eax]
add eax, ecx
mov dword [esp + 0x20], eax
xor eax, eax
mov al, byte [edx]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x48], eax
add edi, eax
xor eax, eax
mov dword [esp + 0x38], ebp
mov ax, word [edx]
mov edx, dword [esp + 0x50]
imul eax, dword [esp + 0x48]
add esi, eax
mov eax, dword [esp + 0x24]
add eax, ecx
inc edx
mov dword [esp + 0x24], eax
lea eax, [ebx*8]
sub eax, edi
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], eax
mov eax, ebp
imul eax, ebx
add edi, ebx
lea edx, [eax*8]
sub edx, esi
add esi, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x28]
sub eax, edi
sub eax, edx
mov edx, dword [esp + 0x78]
add eax, edx
test eax, eax
mov dword [esp + 0x34], eax
jle 0x5111bf
mov eax, dword [esp + 0x1c]
mov ebp, dword [esp + 0x3c]
imul eax, edx
mov edx, dword [esp + 0x2c]
sub eax, esi
sub eax, edx
add eax, ebp
mov ebp, dword [esp + 0x1c]
cdq
idiv dword [esp + 0x34]
sub eax, ebp
lea edx, [eax + ebp]
cmp edx, 0xffff
jle 0x511062
mov eax, 0xffff
sub eax, ebp
jmp 0x51106a
mov eax, dword [esp + 0x64]
mov word [eax], 0
lea edx, [ecx + eax]
mov eax, dword [esp + 0x74]
mov dword [esp + 0x10], edx
test eax, eax
je 0x510eff
mov edx, dword [esp + 0x4c]
mov byte [eax], 0
mov dword [esp + 0x68], edx
jmp 0x510eff
test edx, edx
jge 0x51106a
mov eax, ebp
neg eax
mov edx, dword [esp + 0xb0]
cmp eax, edx
jle 0x511096
sub eax, edx
imul eax, dword [esp + 0xac]
cdq
and edx, 0xff
add eax, edx
mov edx, dword [esp + 0x10]
sar eax, 8
add eax, ebp
mov word [edx], ax
jmp 0x5110ae
neg edx
cmp eax, edx
jge 0x5110a7
mov edx, dword [esp + 0xb0]
add eax, edx
jmp 0x511077
mov eax, dword [esp + 0x10]
mov word [eax], bp
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x74]
add edx, ecx
test eax, eax
mov dword [esp + 0x10], edx
je 0x51112d
mov eax, dword [esp + 0x78]
mov ebp, dword [esp + 0x34]
sub ebp, eax
lea edx, [eax + ebp]
cmp edx, 0xff
jle 0x5110de
mov ebp, 0xff
sub ebp, eax
jmp 0x5110e6
test edx, edx
jge 0x5110e6
mov ebp, eax
neg ebp
mov edx, dword [esp + 0xb0]
cmp ebp, edx
jle 0x5110f7
mov eax, ebp
sub eax, edx
jmp 0x511106
neg edx
cmp ebp, edx
jge 0x511120
mov eax, dword [esp + 0xb0]
add eax, ebp
imul eax, dword [esp + 0xac]
cdq
and edx, 0xff
add eax, edx
mov dl, byte [esp + 0x78]
sar eax, 8
add al, dl
mov edx, dword [esp + 0x68]
mov byte [edx], al
mov eax, edx
inc eax
mov dword [esp + 0x68], eax
mov ebp, dword [esp + 0x38]
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x54]
dec eax
mov dword [esp + 0x40], esi
mov dword [esp + 0x34], edx
mov dword [esp + 0x44], edi
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x78], ebx
mov dword [esp + 0x5c], eax
jne 0x510f4f
mov eax, dword [esp + 0x9c]
test eax, eax
je 0x5112aa
sub edx, edi
mov edi, dword [esp + 0x28]
sub edx, edi
add edx, ebx
mov edi, edx
test edi, edi
jle 0x511292
mov eax, ebp
mov edx, dword [esp + 0x2c]
imul eax, ebx
mov ecx, dword [esp + 0x48]
sub eax, esi
sub eax, edx
add eax, ecx
cdq
idiv edi
sub eax, ebp
lea ecx, [eax + ebp]
cmp ecx, 0xffff
jle 0x5111eb
mov eax, 0xffff
sub eax, ebp
jmp 0x5111f3
mov eax, dword [esp + 0x10]
mov word [eax], 0
add eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x74]
test eax, eax
je 0x511131
mov eax, dword [esp + 0x68]
mov byte [eax], 0
inc eax
mov dword [esp + 0x68], eax
jmp 0x511131
test ecx, ecx
jge 0x5111f3
mov eax, ebp
neg eax
mov ecx, dword [esp + 0xb0]
cmp eax, ecx
jle 0x51121f
sub eax, ecx
imul eax, dword [esp + 0xac]
cdq
and edx, 0xff
add eax, edx
mov edx, dword [esp + 0x10]
sar eax, 8
add eax, ebp
mov word [edx], ax
jmp 0x511232
mov edx, ecx
neg edx
cmp eax, edx
jge 0x51122b
add eax, ecx
jmp 0x511200
mov eax, dword [esp + 0x10]
mov word [eax], bp
mov eax, dword [esp + 0x74]
test eax, eax
je 0x5112aa
sub edi, ebx
mov eax, edi
lea edx, [eax + ebx]
cmp edx, 0xff
jle 0x511252
mov eax, 0xff
sub eax, ebx
jmp 0x51125a
test edx, edx
jge 0x51125a
mov eax, ebx
neg eax
cmp eax, ecx
jle 0x511262
sub eax, ecx
jmp 0x51126c
mov edx, ecx
neg edx
cmp eax, edx
jge 0x51128a
add eax, ecx
imul eax, dword [esp + 0xac]
cdq
mov ecx, dword [esp + 0x68]
and edx, 0xff
add eax, edx
sar eax, 8
add al, bl
mov byte [ecx], al
jmp 0x5112aa
mov edx, dword [esp + 0x68]
mov byte [edx], bl
jmp 0x5112aa
mov eax, dword [esp + 0x10]
mov word [eax], 0
mov eax, dword [esp + 0x74]
test eax, eax
je 0x5112aa
mov ecx, dword [esp + 0x68]
mov byte [ecx], 0
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x84]
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x6c], ecx
lea ecx, [ecx + edx*2]
mov edx, dword [esp + 0x88]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x64]
mov esi, dword [esp + 0x8c]
mov ebp, dword [esp + 0x74]
lea edx, [ecx + edx*2]
mov ecx, dword [esp + 0x7c]
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x80]
mov dword [esp + 0x7c], edx
add edx, esi
mov esi, dword [esp + 0xa4]
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x90]
add ebp, edx
add ebx, edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x74], ebp
inc edx
mov dword [esp + 0x4c], ebx
cmp edx, esi
mov dword [esp + 0x58], edx
jle 0x510b5f
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret