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

Disassembly:
sub esp, 0x50
mov eax, dword [esp + 0x94]
mov dword [esp + 0x44], 0
test eax, eax
jl 0x510b2a
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x54]
inc eax
push ebx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x88]
add ecx, eax
push ebp
push esi
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x64]
push edi
jmp 0x510345
mov eax, dword [esp + 0x94]
mov edx, dword [esp + 0x74]
mov esi, dword [esp + 0x54]
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0xa4]
cmp esi, edx
jne 0x510371
mov edx, dword [esp + 0xa0]
test edx, edx
je 0x510371
mov ebp, dword [esp + 0x6c]
mov edx, dword [esp + 0x7c]
jmp 0x510388
mov edx, dword [esp + 0x70]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x80]
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x2c], edx
mov esi, dword [esp + 0x98]
test esi, esi
je 0x510435
mov esi, dword [esp + 0x78]
xor ebx, ebx
mov bl, byte [esi]
mov esi, ebx
xor ebx, ebx
mov bl, byte [ecx]
add ecx, eax
mov edi, ebx
mov ebx, dword [esp + 0x78]
imul edi, esi
inc ebx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x7c]
xor ecx, ecx
mov cl, byte [ebx]
inc ebx
mov dword [esp + 0x40], ebx
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x78], ecx
xor ecx, ecx
mov cl, byte [ebx]
add ebx, eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x28], ebx
xor ecx, ecx
xor ebx, ebx
mov cl, byte [edx]
mov bl, byte [ebp]
imul ebx, ecx
add esi, ecx
mov ecx, dword [esp + 0x10]
add edi, ebx
mov ebx, dword [esp + 0x78]
imul ecx, ebx
add ebp, eax
inc edx
mov dword [esp + 0x24], ebp
lea ebp, [ebx*8]
lea ebx, [ecx*8]
sub ebp, esi
sub ebx, edi
mov dword [esp + 0x2c], edx
mov dword [esp + 0x44], ebx
mov ebx, dword [esp + 0x78]
add esi, ebx
add edi, ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], esi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x38], esi
jmp 0x510549
mov esi, dword [esp + 0x78]
xor ebx, ebx
mov bl, byte [esi]
mov edi, ebx
xor ebx, ebx
mov bl, byte [ecx]
add ecx, eax
mov esi, ebx
mov ebx, dword [esp + 0x78]
imul esi, edi
inc ebx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x7c]
xor ecx, ecx
mov cl, byte [ebx]
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x78], ecx
add edi, ecx
xor ecx, ecx
mov cl, byte [ebx]
imul ecx, dword [esp + 0x78]
add esi, ecx
mov ecx, dword [esp + 0x7c]
lea ebx, [ecx + 1]
mov ecx, dword [esp + 0x6c]
add ecx, eax
mov dword [esp + 0x28], ecx
xor ecx, ecx
mov cl, byte [edx]
mov dword [esp + 0x30], ecx
add edi, ecx
xor ecx, ecx
mov dword [esp + 0x38], edi
mov cl, byte [ebp]
mov edi, dword [esp + 0x20]
imul ecx, dword [esp + 0x30]
add esi, ecx
xor ecx, ecx
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x1c]
inc edx
add ebp, eax
mov cl, byte [esi]
mov esi, ecx
xor ecx, ecx
mov cl, byte [edi]
mov dword [esp + 0x18], esi
mov edi, ecx
mov ecx, dword [esp + 0x20]
add ecx, eax
imul edi, esi
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x20], ecx
xor ecx, ecx
inc esi
mov cl, byte [ebx]
inc ebx
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x28]
mov dword [esp + 0x40], ebx
xor ebx, ebx
mov bl, byte [esi]
add esi, eax
mov dword [esp + 0x10], ebx
xor ebx, ebx
mov bl, byte [edx]
mov dword [esp + 0x28], esi
mov esi, ebx
mov ebx, dword [esp + 0x18]
add ebx, esi
mov dword [esp + 0x78], ecx
mov dword [esp + 0x18], ebx
xor ebx, ebx
mov bl, byte [ebp]
imul ebx, esi
add edi, ebx
inc edx
add ebp, eax
mov dword [esp + 0x2c], edx
mov dword [esp + 0x24], ebp
mov esi, dword [esp + 0x18]
lea ebp, [ecx*8]
sub ebp, esi
mov esi, dword [esp + 0x10]
imul esi, ecx
mov dword [esp + 0x14], esi
lea ebx, [esi*8]
sub ebx, edi
mov dword [esp + 0x44], ebx
mov ebx, dword [esp + 0x18]
add ebx, ecx
add edi, esi
mov dword [esp + 0x18], ebx
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
xor ecx, ecx
mov cl, byte [esi]
mov esi, ecx
xor ecx, ecx
mov cl, byte [ebx]
mov ebx, dword [esp + 0x1c]
imul ecx, esi
inc ebx
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x20]
add ebx, eax
mov dword [esp + 0x20], ebx
xor ebx, ebx
mov bl, byte [edx]
mov edx, ebx
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x30], edx
add esi, edx
xor edx, edx
mov dl, byte [ebx]
add ebx, eax
imul edx, dword [esp + 0x30]
mov eax, dword [esp + 0x40]
add ecx, edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x24], ebx
xor ebx, ebx
inc edx
mov bl, byte [eax]
inc eax
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x40], eax
xor eax, eax
mov al, byte [edx]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x94]
add edx, eax
lea eax, [ebx*8]
sub eax, esi
mov dword [esp + 0x28], edx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x34]
imul eax, ebx
add esi, ebx
lea edx, [eax*8]
sub ebp, esi
sub edx, ecx
add ecx, eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x48], edx
sub ebp, eax
mov eax, dword [esp + 0x78]
add ebp, eax
test ebp, ebp
mov dword [esp + 0x58], ebp
jle 0x510703
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x44]
sub eax, ecx
sub eax, edx
add eax, ebp
cdq
idiv dword [esp + 0x58]
mov ebp, eax
mov eax, dword [esp + 0x10]
sub ebp, eax
lea edx, [eax + ebp]
cmp edx, 0xff
jle 0x510633
mov ebp, 0xff
sub ebp, eax
jmp 0x51063b
test edx, edx
jge 0x51063b
mov ebp, eax
neg ebp
mov edx, dword [esp + 0xb0]
cmp ebp, edx
jle 0x51064c
mov eax, ebp
sub eax, edx
jmp 0x51065b
neg edx
cmp ebp, edx
jge 0x510675
mov eax, dword [esp + 0xb0]
add eax, ebp
imul eax, dword [esp + 0xac]
cdq
and edx, 0xff
add eax, edx
mov dl, byte [esp + 0x10]
sar eax, 8
add al, dl
mov edx, dword [esp + 0x64]
mov byte [edx], al
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x74]
test eax, eax
je 0x5106f9
mov eax, dword [esp + 0x78]
mov ebp, dword [esp + 0x58]
sub ebp, eax
lea edx, [eax + ebp]
cmp edx, 0xff
jle 0x5106a9
mov ebp, 0xff
sub ebp, eax
jmp 0x5106b1
test edx, edx
jge 0x5106b1
mov ebp, eax
neg ebp
mov edx, dword [esp + 0xb0]
cmp ebp, edx
jle 0x5106c2
mov eax, ebp
sub eax, edx
jmp 0x5106d1
neg edx
cmp ebp, edx
jge 0x5106eb
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 + 0x50]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x48]
jmp 0x510729
mov eax, dword [esp + 0x64]
mov byte [eax], 0
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x74]
test eax, eax
je 0x510725
mov byte [eax], 0
mov eax, dword [esp + 0x50]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x30]
mov ebp, dword [esp + 0x98]
test ebp, ebp
jne 0x510740
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x3c], edi
mov dword [esp + 0x38], ebp
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x18], esi
mov dword [esp + 0x10], ebp
mov ebp, dword [esp + 0xa8]
cmp ebp, 1
mov dword [esp + 0x58], ecx
mov edi, eax
mov dword [esp + 0x44], edx
mov dword [esp + 0x78], ebx
jle 0x510962
dec ebp
mov dword [esp + 0x5c], ebp
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
xor ecx, ecx
mov ebp, dword [esp + 0x94]
mov cl, byte [eax]
xor ebx, ebx
mov esi, ecx
xor ecx, ecx
mov cl, byte [edx]
add edx, ebp
imul ecx, esi
inc eax
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x40]
xor edx, edx
mov bl, byte [eax]
inc eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x28]
mov dl, byte [eax]
add eax, ebp
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
xor eax, eax
mov dword [esp + 0x34], edx
mov al, byte [ebp]
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x30], eax
add esi, eax
xor eax, eax
mov al, byte [ebp]
imul eax, dword [esp + 0x30]
add ecx, eax
mov eax, dword [esp + 0x2c]
inc eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x94]
add ebp, eax
lea eax, [ebx*8]
sub eax, esi
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], eax
mov eax, edx
imul eax, ebx
add esi, ebx
lea ebp, [eax*8]
sub edi, esi
sub ebp, ecx
add ecx, eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x48], ebp
mov ebp, dword [esp + 0x78]
sub edi, eax
add edi, ebp
mov ebp, edi
test ebp, ebp
jle 0x5109ba
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x3c]
imul eax, dword [esp + 0x78]
mov edi, dword [esp + 0x44]
sub eax, ecx
sub eax, edx
add eax, edi
cdq
idiv ebp
mov edi, eax
mov eax, dword [esp + 0x10]
sub edi, eax
lea edx, [edi + eax]
cmp edx, 0xff
jle 0x51085b
mov edi, 0xff
sub edi, eax
jmp 0x510863
test edx, edx
jge 0x510863
mov edi, eax
neg edi
mov edx, dword [esp + 0xb0]
cmp edi, edx
jle 0x510874
mov eax, edi
sub eax, edx
jmp 0x510883
neg edx
cmp edi, edx
jge 0x51089d
mov eax, dword [esp + 0xb0]
add eax, edi
imul eax, dword [esp + 0xac]
cdq
and edx, 0xff
add eax, edx
mov dl, byte [esp + 0x10]
sar eax, 8
add al, dl
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0xb0]
mov byte [edx], al
mov eax, dword [esp + 0x94]
add edx, eax
mov eax, dword [esp + 0x74]
test eax, eax
mov dword [esp + 0x14], edx
je 0x51091d
mov eax, dword [esp + 0x78]
sub ebp, eax
lea edx, [eax + ebp]
cmp edx, 0xff
jle 0x5108d9
mov ebp, 0xff
sub ebp, eax
jmp 0x5108e1
test edx, edx
jge 0x5108e1
mov ebp, eax
neg ebp
cmp ebp, edi
jle 0x5108eb
mov eax, ebp
sub eax, edi
jmp 0x5108f6
mov edx, edi
neg edx
cmp ebp, edx
jge 0x510910
lea eax, [edi + 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 edx, dword [esp + 0x34]
mov eax, dword [esp + 0x48]
mov edi, dword [esp + 0x30]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x5c]
dec eax
mov dword [esp + 0x58], ecx
mov dword [esp + 0x18], esi
mov dword [esp + 0x10], edx
mov dword [esp + 0x78], ebx
mov dword [esp + 0x5c], eax
jne 0x51076f
mov edx, dword [esp + 0x48]
mov eax, edi
mov edi, dword [esp + 0x9c]
mov ebp, dword [esp + 0xac]
test edi, edi
je 0x510a9c
mov edi, dword [esp + 0x38]
sub eax, esi
sub eax, edi
add eax, ebx
mov edi, eax
test edi, edi
jle 0x510a86
mov eax, dword [esp + 0x34]
imul eax, ebx
sub eax, ecx
mov ecx, dword [esp + 0x3c]
sub eax, ecx
mov ecx, dword [esp + 0x34]
add eax, edx
cdq
idiv edi
sub eax, ecx
lea edx, [eax + ecx]
cmp edx, 0xff
jle 0x5109eb
mov eax, 0xff
sub eax, ecx
jmp 0x5109f3
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x94]
mov byte [eax], 0
add eax, edi
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x74]
test eax, eax
je 0x510921
mov eax, dword [esp + 0x68]
mov byte [eax], 0
inc eax
mov dword [esp + 0x68], eax
jmp 0x510921
test edx, edx
jge 0x5109f3
mov eax, ecx
neg eax
mov esi, dword [esp + 0xb0]
cmp eax, esi
jle 0x510a19
sub eax, esi
imul eax, ebp
cdq
and edx, 0xff
add eax, edx
sar eax, 8
add al, cl
mov ecx, dword [esp + 0x14]
mov byte [ecx], al
jmp 0x510a2b
mov edx, esi
neg edx
cmp eax, edx
jge 0x510a25
add eax, esi
jmp 0x510a00
mov edx, dword [esp + 0x14]
mov byte [edx], cl
mov eax, dword [esp + 0x74]
test eax, eax
je 0x510a9c
sub edi, ebx
mov eax, edi
lea ecx, [eax + ebx]
cmp ecx, 0xff
jle 0x510a4b
mov eax, 0xff
sub eax, ebx
jmp 0x510a53
test ecx, ecx
jge 0x510a53
mov eax, ebx
neg eax
cmp eax, esi
jle 0x510a5b
sub eax, esi
jmp 0x510a65
mov edx, esi
neg edx
cmp eax, edx
jge 0x510a7e
add eax, esi
imul eax, ebp
cdq
mov ecx, dword [esp + 0x68]
and edx, 0xff
add eax, edx
sar eax, 8
add al, bl
mov byte [ecx], al
jmp 0x510a9c
mov edx, dword [esp + 0x68]
mov byte [edx], bl
jmp 0x510a9c
mov eax, dword [esp + 0x14]
mov byte [eax], 0
mov eax, dword [esp + 0x74]
test eax, eax
je 0x510a9c
mov ecx, dword [esp + 0x68]
mov byte [ecx], 0
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x6c]
mov edi, dword [esp + 0x84]
mov edx, dword [esp + 0x4c]
mov esi, dword [esp + 0x64]
mov dword [esp + 0x6c], eax
add eax, edi
mov ebp, dword [esp + 0x8c]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x88]
add edx, eax
mov ebx, dword [esp + 0x74]
mov edi, dword [esp + 0x50]
add esi, eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x7c], eax
add eax, ebp
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0xa4]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x64], esi
add ebx, eax
add edi, eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x74], ebx
inc eax
mov dword [esp + 0x50], edi
cmp eax, edx
mov dword [esp + 0x54], eax
jle 0x51033e
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret