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

Disassembly:
push ebp
push edi
xor edi, edi
push esi
push ebx
xor ebx, ebx
xor esi, esi
sub esp, 0x8c
mov eax, dword [esp + 0xa0]
mov word [esp + 0x4c], bx
mov ebx, dword [ecx + 0x1e8]
mov word [esp + 0x6c], si
mov word [esp + 0x7c], di
xor edi, edi
mov dword [esp + 0x20], ecx
mov eax, dword [eax + 0x10]
mov dword [esp + 0x40], 0
mov esi, ebx
sar ebx, 0x1f
mov dword [esp + 0x44], 0
and ebx, 0xffffffe0
mov dword [esp + 0x48], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x2c], eax
mov eax, dword [eax]
add bx, 0x1f6
mov dword [esp + 0x68], 0
mov dword [esp + 0x78], 0
test eax, eax
je 0x453050
mov edx, dword [eax + 4]
lea ecx, [edx + 0x200]
add edx, 0xc
cmp ecx, dword [eax]
ja 0x453050
mov dword [eax + 4], ecx
add edx, eax
mov eax, 0x405
mov word [esp + 0x6e], ax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x74], edi
mov edi, edx
mov dword [edx], 0xc
mov dword [edx + 8], str.diff_current
mov word [esp + 0x7e], bx
xor ebx, ebx
mov dword [edx + 4], eax
mov eax, dword [esp + 0x6c]
mov dword [edx + 0xc], eax
mov eax, dword [esp + 0x74]
mov dword [edi + 0x10], esi
mov dword [edx + 0x14], eax
mov eax, dword [esp + 0x78]
mov dword [edx + 0x18], eax
mov eax, dword [esp + 0x7c]
mov word [esp + 0x7c], bx
mov dword [edx + 0x1c], eax
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x1f4]
mov ecx, dword [eax + 0x1f0]
xor eax, eax
mov word [esp + 0x6c], ax
mov dword [edi + 0x20], 0xb
mov dword [edi + 0x24], 0
mov dword [edi + 0x28], str.shares_good
mov ebx, edx
mov ebp, edx
mov esi, ecx
sar ebx, 0x1f
sar ebp, 0x1f
mov dword [edi + 0x30], ecx
mov eax, ebx
mov dword [edi + 0x34], edx
mov dword [edi + 0x38], 0
and eax, 0xffffff80
lea ebx, [eax + 0x1d6]
mov eax, ebp
mov ebp, dword [esp + 0x6c]
and eax, 0xffffff80
add ax, 0x196
test edx, edx
cmove eax, ebx
and esi, 0x80000000
mov dword [edi + 0x2c], ebp
mov ebx, eax
or ebx, 0x20
or esi, edx
cmove eax, ebx
mov word [esp + 0x7e], ax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x28], edi
mov dword [edi + 0x3c], eax
mov eax, dword [esp + 0x20]
mov esi, dword [eax + 0x200]
add esi, dword [eax + 0x1f0]
mov edi, dword [eax + 0x204]
adc edi, dword [eax + 0x1f4]
mov dword [esp + 0x70], esi
mov ebx, edi
mov edx, edi
mov dword [esp + 0x74], edi
sar ebx, 0x1f
mov ecx, ebx
mov ebx, edi
sar ebx, 0x1f
and ecx, 0xffffff80
mov eax, ebx
add cx, 0x1d6
mov ebx, esi
and eax, 0xffffff80
add ax, 0x196
test edi, edi
cmove eax, ecx
and ebx, 0x80000000
mov ecx, eax
or ecx, 0x20
or edx, ebx
cmove eax, ecx
mov ecx, dword [esp + 0x28]
xor ebx, ebx
mov word [esp + 0x7e], ax
mov eax, dword [esp + 0x74]
mov edi, ecx
mov dword [ecx + 0x4c], ebp
mov dword [ecx + 0x40], 0xc
mov dword [ecx + 0x44], 0
mov dword [ecx + 0x48], str.shares_total
mov ebp, ecx
mov dword [edi + 0x50], esi
mov esi, dword [esp + 0x20]
mov dword [ecx + 0x54], eax
mov eax, dword [esp + 0x7c]
mov dword [ecx + 0x58], 0
mov dword [ecx + 0x5c], eax
lea ecx, [esi + 0x98]
call fcn.00401710
xor ecx, ecx
mov dword [esp + 0x74], ebx
xor edx, edx
mov word [esp + 0x7c], cx
mov ecx, eax
sar eax, 0x1f
and eax, 0xffffffe0
mov word [esp + 0x6c], dx
mov edx, 0x405
add ax, 0x1f6
mov dword [edi + 0x60], 8
mov dword [edi + 0x64], 0
mov word [esp + 0x7e], ax
mov eax, dword [esp + 0x74]
mov dword [edi + 0x68], str.avg_time
mov word [esp + 0x6e], dx
mov edi, dword [esp + 0x6c]
mov dword [ebp + 0x70], ecx
mov dword [ebp + 0x74], eax
mov eax, dword [esp + 0x7c]
mov dword [ebp + 0x78], 0
mov dword [esp + 0x64], 0
mov dword [ebp + 0x6c], edi
mov dword [esp + 0x78], 0
mov dword [ebp + 0x7c], eax
mov edx, dword [esi + 0x20c]
mov ecx, dword [esi + 0x208]
mov dword [esp + 0x60], 0xc
mov dword [ebp + 0x8c], edi
mov dword [ebp + 0x80], 0xc
mov ebx, edx
mov eax, edx
mov dword [ebp + 0x94], edx
sar ebx, 0x1f
sar eax, 0x1f
mov esi, ecx
and ebx, 0xffffff80
and eax, 0xffffff80
mov dword [ebp + 0x90], ecx
add bx, 0x1d6
add ax, 0x196
test edx, edx
cmove eax, ebx
and esi, 0x80000000
mov dword [ebp + 0x84], 0
mov ebx, eax
mov dword [ebp + 0x88], str.hashes_total
mov dword [esp + 0x70], ecx
or ebx, 0x20
or esi, edx
mov dword [esp + 0x74], edx
cmove eax, ebx
mov dword [ebp + 0x98], 0
mov dword [esp + 0x68], str.hashes_total
mov word [esp + 0x7e], ax
mov eax, dword [esp + 0x7c]
xor ecx, ecx
xor edx, edx
xor esi, esi
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
xor edi, edi
mov dword [ebp + 0x9c], eax
mov word [esp + 0x5c], cx
mov ebp, edx
mov dword [esp + 0x1c], esi
nop
mov eax, dword [esp + 0x20]
mov dword [esp + 0x78], 0
mov edx, dword [eax + ebp*8 + 0x19c]
mov ecx, dword [eax + ebp*8 + 0x198]
xor eax, eax
mov word [esp + 0x7c], ax
mov ebx, edx
mov eax, edx
mov dword [esp + 0x18], ecx
sar ebx, 0x1f
sar eax, 0x1f
and ebx, 0xffffff80
and eax, 0xffffff80
add ax, 0x196
add bx, 0x1d6
test edx, edx
cmovne ebx, eax
and ecx, 0x80000000
mov eax, ebx
or eax, 0x20
or ecx, edx
cmove ebx, eax
cmp edi, ebp
ja 0x452c50
test edi, edi
jne 0x452ed0
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x452fd4
mov dword [esp + 0x24], 0x10
mov dword [esp + 0x30], 0x100
mov eax, dword [esp + 0x2c]
mov esi, dword [eax]
mov ecx, dword [esi + 4]
mov dword [esp + 0x34], ecx
add ecx, 0xc
mov eax, ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esi]
mov dword [esp + 0x38], ecx
mov ecx, eax
sub ecx, edi
lea eax, [esi + ecx]
cmp dword [esp + 0x1c], eax
je 0x452f10
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
add eax, ecx
cmp eax, dword [esp + 0x38]
mov ecx, eax
jbe 0x452c2e
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
cmp dword [esi + 4], eax
cmovae eax, dword [esi + 4]
mov ecx, eax
mov eax, dword [esi + 0xc]
test eax, eax
je 0x4531dd
mov eax, ecx
add eax, 0xc
jne 0x452bf0
mov edi, dword [esp + 0x24]
mov dword [esp + 0x1c], 0
jmp 0x452c50
mov dword [esp], eax
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], ecx
call sub.msvcrt.dll_malloc
test eax, eax
mov esi, eax
mov edx, dword [esp + 0x34]
je 0x452be1
mov ecx, dword [esp + 0x38]
mov dword [eax + 4], 0
mov dword [esp + 0x3c], 0xc
mov dword [eax], ecx
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax]
mov dword [esi + 8], ecx
mov ecx, dword [esp + 0x30]
mov dword [eax], esi
mov eax, dword [esp + 0x3c]
mov dword [esi + 4], ecx
add eax, esi
je 0x452be1
test edi, edi
jne 0x452f90
mov edi, dword [esp + 0x24]
mov dword [esp + 0x1c], eax
lea esi, [esi]
mov eax, ebp
mov dword [esp + 0x74], edx
mov ecx, dword [esp + 0x18]
shl eax, 4
add eax, dword [esp + 0x1c]
mov word [esp + 0x7e], bx
add ebp, 1
cmp ebp, 0xa
mov dword [esp + 0x70], ecx
mov dword [eax + 4], edx
mov edx, dword [esp + 0x78]
mov dword [eax], ecx
mov dword [eax + 8], edx
mov edx, dword [esp + 0x7c]
mov dword [eax + 0xc], edx
jne 0x452b00
xor eax, eax
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x1c]
mov word [esp + 0x7c], ax
mov eax, 0x405
mov ecx, 4
mov word [esp + 0x7e], ax
mov eax, dword [esp + 0x7c]
xor ebx, ebx
mov dword [edx + 0xb4], edi
mov dword [edx + 0xa0], 4
mov ebp, 4
mov dword [edx + 0xa4], 0
mov dword [edx + 0xa8], str.best
mov dword [edx + 0xac], eax
mov dword [edx + 0xb0], 0xa
mov dword [edx + 0xb8], esi
mov dword [esp + 0x54], edi
mov edi, edx
mov word [esp + 0x5e], cx
mov edx, dword [esp + 0x5c]
mov word [esp + 0x6c], bx
mov dword [esp + 0x74], 0
mov dword [esp + 0x50], 0xa
mov dword [esp + 0x58], esi
mov dword [edi + 0xbc], edx
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x70], 9
mov dword [edi + 0xc0], 9
mov dword [edi + 0xc4], 0
mov dword [edi + 0xc8], str.error_log
mov dword [edi + 0xcc], eax
mov word [esp + 0x6e], bp
mov dword [edi + 0xd0], 0
mov dword [edi + 0xd4], 0
mov dword [edi + 0xd8], 0
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x78], 0
mov dword [edi + 0xdc], eax
mov eax, dword [esp + 0xa0]
mov ebx, dword [eax]
mov eax, dword [eax + 4]
cmp ebx, eax
jb 0x452fc5
test eax, eax
je 0x452f32
lea edx, [eax + 1]
mov esi, dword [esp + 0xa0]
shr edx, 1
add edx, eax
shl eax, 5
mov dword [esi + 4], edx
mov esi, dword [esi + 8]
shl edx, 5
mov edi, eax
test esi, esi
je 0x45326e
test edx, edx
je 0x452f87
cmp edi, edx
jae 0x452e45
mov eax, dword [esp + 0x2c]
mov eax, dword [eax]
mov ecx, dword [eax + 4]
mov ebp, dword [eax]
mov dword [esp + 0x18], ecx
add ecx, 0xc
mov dword [esp + 0x20], ebp
mov dword [esp + 0x1c], ecx
sub ecx, edi
add ecx, eax
cmp esi, ecx
je 0x453208
mov ebp, dword [esp + 0x18]
mov ebx, edx
add ebp, edx
cmp dword [esp + 0x20], ebp
jb 0x453119
mov dword [eax + 4], ebp
mov ebp, dword [esp + 0x1c]
add ebp, eax
je 0x45313c
test edi, edi
je 0x452e3a
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], ebp
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0xa0]
mov esi, ebp
mov ebx, dword [eax]
mov eax, dword [esp + 0xa0]
mov dword [eax + 8], esi
mov eax, dword [esp + 0x74]
shl ebx, 5
mov edx, 0x405
add ebx, esi
mov word [esp + 0x7e], dx
mov ecx, 3
mov dword [ebx], 7
mov dword [ebx + 8], str.results
mov dword [ebx + 4], eax
mov eax, dword [esp + 0x7c]
mov word [esp + 0x4e], cx
mov dword [ebx + 0xc], eax
mov eax, dword [esp + 0xa0]
mov eax, dword [eax]
mov dword [esp + 0x18], eax
shl eax, 5
add esi, eax
mov eax, dword [esp + 0x28]
mov dword [esi + 0x10], 7
mov dword [esi + 0x14], 0x10
mov dword [esi + 0x18], eax
mov eax, dword [esp + 0x4c]
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0xa0]
add dword [eax], 1
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret 4
lea eax, [edi + 1]
shr eax, 1
add eax, edi
cmp edi, eax
mov dword [esp + 0x24], eax
jae 0x452c50
shl eax, 4
shl edi, 4
cmp dword [esp + 0x1c], 0
je 0x4533ab
cmp edi, eax
mov dword [esp + 0x30], eax
jb 0x452b7f
mov edi, dword [esp + 0x24]
jmp 0x452c50
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
sub ecx, edi
add eax, ecx
cmp eax, dword [esp + 0x38]
ja 0x452bac
mov dword [esi + 4], eax
mov edi, dword [esp + 0x24]
jmp 0x452c50
mov eax, dword [esp + 0xa0]
mov dword [eax + 4], 0x10
mov eax, dword [esp + 0x2c]
mov eax, dword [eax]
test eax, eax
je 0x452f5e
mov ecx, dword [eax + 4]
lea edx, [ecx + 0x200]
cmp edx, dword [eax]
lea esi, [ecx + 0xc]
jbe 0x45318e
mov eax, dword [esp + 0x2c]
mov edi, dword [eax + 4]
mov eax, dword [eax + 0xc]
cmp edi, 0x200
jbe 0x45314c
test eax, eax
lea esi, [edi + 0xc]
je 0x453326
test esi, esi
jne 0x45315e
xor esi, esi
jmp 0x452e45
cmp edi, 4
jae 0x453014
test edi, edi
je 0x452c41
mov esi, dword [esp + 0x1c]
test edi, 2
movzx ecx, byte [esi]
mov byte [eax], cl
je 0x452c41
mov esi, dword [esp + 0x1c]
movzx ecx, word [esi + edi - 2]
mov word [eax + edi - 2], cx
jmp 0x452c41
mov eax, dword [esp + 0xa0]
mov esi, dword [eax + 8]
jmp 0x452e4f
mov edi, 0x10
mov eax, 0x100
mov esi, eax
mov eax, dword [esp + 0x2c]
mov eax, dword [eax]
test eax, eax
je 0x4530b2
mov ecx, dword [eax + 4]
mov dword [esp + 0x1c], ecx
add ecx, esi
cmp ecx, dword [eax]
ja 0x4530b2
mov esi, dword [esp + 0x1c]
add esi, 0xc
add esi, eax
mov dword [eax + 4], ecx
mov dword [esp + 0x1c], esi
jmp 0x452c50
mov esi, dword [esp + 0x1c]
mov ecx, dword [esi]
mov dword [eax], ecx
mov dword [esp + 0x1c], esi
mov ecx, dword [esi + edi - 4]
mov esi, eax
mov dword [eax + edi - 4], ecx
lea ecx, [eax + 4]
and ecx, 0xfffffffc
sub esi, ecx
mov dword [esp + 0x30], ecx
mov ecx, esi
mov esi, dword [esp + 0x1c]
sub esi, ecx
add ecx, edi
mov edi, dword [esp + 0x30]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
jmp 0x452c41
mov eax, dword [esp + 0x2c]
mov ebp, dword [eax + 4]
mov eax, dword [eax + 0xc]
cmp ebp, 0x200
jbe 0x453198
test eax, eax
lea edx, [ebp + 0xc]
je 0x45336d
test edx, edx
jne 0x4531aa
mov eax, 0x405
mov dword [esp + 0x68], str.diff_current
mov word [esp + 0x6e], ax
mov dword [0], 0xc
mov eax, dword [esp + 0x64]
mov dword [4], eax
mov eax, dword [esp + 0x68]
mov dword [8], eax
mov eax, dword [esp + 0x6c]
mov dword [0xc], eax
ud2
mov eax, dword [esp + 0x2c]
mov ecx, esi
cmp dword [eax + 4], esi
cmovae ecx, dword [eax + 4]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x4532fb
mov eax, ecx
add eax, 0xc
je 0x452be5
mov dword [esp], eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x24], ecx
call sub.msvcrt.dll_malloc
test eax, eax
mov edx, dword [esp + 0x1c]
je 0x452be5
mov ecx, dword [esp + 0x24]
mov dword [eax + 4], 0
mov dword [eax], ecx
mov ecx, dword [esp + 0x2c]
mov ecx, dword [ecx]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x2c]
mov dword [ecx], eax
mov ecx, esi
mov esi, 0xc
jmp 0x453006
mov eax, dword [esp + 0x2c]
mov ebp, edx
cmp dword [eax + 4], edx
cmovae ebp, dword [eax + 4]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x453253
mov eax, ebp
add eax, 0xc
jne 0x453220
mov eax, dword [esp + 0xa0]
xor esi, esi
mov ebx, dword [eax]
jmp 0x452e45
test eax, eax
mov esi, 0x20c
mov edi, 0x200
je 0x453326
mov dword [esp], esi
xor esi, esi
call sub.msvcrt.dll_malloc
test eax, eax
je 0x452e45
mov esi, dword [esp + 0x2c]
mov dword [eax], edi
mov dword [eax + 4], 0
mov edx, dword [esi]
mov dword [eax + 8], edx
mov dword [esi], eax
mov edx, 0x200
mov esi, 0xc
add esi, eax
mov dword [eax + 4], edx
jmp 0x452e45
test eax, eax
mov edx, 0x20c
mov ebp, 0x200
je 0x45334a
mov dword [esp], edx
call sub.msvcrt.dll_malloc
test eax, eax
je 0x453079
mov ecx, dword [esp + 0x2c]
mov dword [eax], ebp
mov dword [eax + 4], 0
mov edx, dword [ecx]
mov dword [eax + 8], edx
mov dword [ecx], eax
mov edx, 0xc
mov ecx, 0x200
jmp 0x452844
mov dword [esp], 1
mov dword [esp + 0x38], edx
mov dword [esp + 0x34], ecx
call fcn.0053ca80
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x34]
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], eax
jmp 0x452bda
mov ecx, dword [esp + 0x18]
sub ecx, edi
add ecx, edx
cmp ebp, ecx
jb 0x452e05
mov dword [eax + 4], ecx
jmp 0x452e45
mov dword [esp], eax
call sub.msvcrt.dll_malloc
test eax, eax
je 0x45313c
mov ecx, dword [esp + 0x2c]
mov dword [eax], ebp
mov ebp, ebx
mov dword [eax + 4], 0
mov dword [esp + 0x1c], 0xc
mov edx, dword [ecx]
mov dword [eax + 8], edx
mov dword [ecx], eax
jmp 0x452e17
mov dword [esp], 1
call fcn.0053ca80
mov edx, dword [esp + 0x2c]
mov dword [edx + 0xc], eax
mov dword [edx + 0x10], eax
jmp 0x453131
test edx, edx
je 0x452e45
mov eax, dword [esp + 0x2c]
mov edi, edx
mov eax, dword [eax]
test eax, eax
je 0x45328f
mov ecx, dword [eax + 4]
lea edx, [edx + ecx]
add ecx, 0xc
cmp edx, dword [eax]
jbe 0x4532f0
mov eax, dword [esp + 0x2c]
mov ebp, edi
cmp dword [eax + 4], edi
cmovae ebp, dword [eax + 4]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x453390
mov eax, ebp
add eax, 0xc
jne 0x4532bc
mov eax, dword [esp + 0xa0]
mov ebx, dword [eax]
jmp 0x452e45
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov ebx, dword [esp + 0xa0]
test eax, eax
mov ebx, dword [ebx]
je 0x452e45
mov esi, dword [esp + 0x2c]
mov dword [eax], ebp
mov ecx, 0xc
mov dword [eax + 4], 0
mov edx, dword [esi]
mov dword [eax + 8], edx
mov dword [esi], eax
mov edx, edi
lea esi, [eax + ecx]
mov dword [eax + 4], edx
jmp 0x452e45
mov dword [esp], 1
mov dword [esp + 0x24], edx
mov dword [esp + 0x1c], ecx
call fcn.0053ca80
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
mov dword [edx + 0xc], eax
mov dword [edx + 0x10], eax
mov edx, dword [esp + 0x24]
jmp 0x4530ca
mov dword [esp], 1
call fcn.0053ca80
mov ebx, dword [esp + 0x2c]
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x10], eax
mov eax, dword [esp + 0xa0]
mov ebx, dword [eax]
jmp 0x452f7f
mov dword [esp], 1
mov dword [esp + 0x18], edx
call fcn.0053ca80
mov edx, dword [esp + 0x2c]
mov dword [edx + 0xc], eax
mov dword [edx + 0x10], eax
mov edx, dword [esp + 0x18]
jmp 0x4531aa
mov dword [esp], 1
mov dword [esp + 0x18], edx
call fcn.0053ca80
mov edx, dword [esp + 0x2c]
mov dword [edx + 0xc], eax
mov dword [edx + 0x10], eax
mov edx, dword [esp + 0x18]
jmp 0x453071
mov dword [esp], 1
call fcn.0053ca80
mov ebx, dword [esp + 0x2c]
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x10], eax
jmp 0x4532a7
mov edi, dword [esp + 0x24]
jmp 0x452fde