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

Disassembly:
push ebp
push edi
push esi
push ebx
mov ebx, ecx
mov ecx, 0x18
sub esp, 0x98
bsr edi, dword [esp + 0xbc]
mov dword [esp], eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x48], 4
lea ebp, [eax*4]
xor edi, 0x1f
mov dword [esp + 0x54], ebp
sub ecx, edi
mov edi, 1
shl edx, cl
shl edi, cl
mov dword [esp + 0x88], edx
mov edx, eax
shl ebx, cl
neg edx
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0xac]
lea esi, [edx*4]
mov dword [esp + 0x18], ebx
mov ebx, eax
shl edi, cl
sub ebx, ebp
mov dword [esp + 0x28], esi
lea esi, [edx + edx]
mov dword [esp + 0x94], edi
lea edi, [eax + eax]
mov dword [esp + 0x1c], esi
lea esi, [ebx + ebx]
mov dword [esp + 0x58], esi
lea esi, [edx*8]
lea edx, [edi + eax]
mov dword [esp + 0x78], esi
lea esi, [edx + edx]
mov dword [esp + 0x24], edi
lea edi, [eax*8]
mov dword [esp + 0x7c], esi
mov esi, eax
sub esi, edi
mov dword [esp + 0x64], edi
lea esi, [esi + esi]
mov dword [esp + 0x80], esi
lea esi, [ebx*4]
mov dword [esp + 0x68], esi
imul esi, eax, 0xfffffff6
add eax, ebp
add eax, eax
mov dword [esp + 0x6c], eax
lea eax, [edx*4]
mov dword [esp + 0x84], eax
mov eax, pe_nt_image_headers32
shl eax, cl
mov dword [esp + 0x60], esi
mov esi, dword [esp]
sub eax, 1
mov dword [esp + 0x8c], eax
mov eax, 0xffffff80
shl eax, cl
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xb0]
add eax, eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x28]
movzx ebx, word [esi]
movzx edi, word [esi + eax]
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x24]
movzx eax, word [esi + eax]
mov edx, edi
mov dword [esp + 8], edi
movzx ebx, word [esi + ebx]
sub edx, eax
mov dword [esp], eax
mov eax, dword [esp + 0x18]
mov ecx, edx
mov ebp, ebx
mov dword [esp + 0x10], ebx
sar ecx, 0x1f
xor edx, ecx
sub edx, ecx
cmp edx, eax
jg 0x684bfc80
mov ecx, ebx
sub ecx, dword [esp + 4]
mov edi, ecx
sar edi, 0x1f
xor ecx, edi
sub ecx, edi
cmp ecx, eax
jg 0x684bfc80
mov eax, dword [esp]
mov edi, dword [esp + 8]
sub eax, dword [esp + 4]
mov ebx, eax
sar eax, 0x1f
sub edi, ebp
xor ebx, eax
mov ecx, eax
mov eax, ebx
mov ebx, edi
sub eax, ecx
sar ebx, 0x1f
mov ecx, edi
xor ecx, ebx
sub ecx, ebx
sar ecx, 1
lea ecx, [ecx + eax*2]
cmp ecx, dword [esp + 0x88]
jg 0x684bfc80
cmp dword [esp + 0xb8], 4
jne 0x684c03a0
movzx ecx, byte [esp + 0x40]
and ecx, 1
cmp dword [esp + 0xb8], 6
jne 0x684c00dc
lea esi, [esi]
test cl, cl
je 0x684c00dc
mov eax, dword [esp]
mov edi, dword [esp + 8]
mov dword [esp + 0x40], 1
mov ebp, dword [esp + 4]
lea edx, [eax + eax]
mov eax, dword [esp + 0xc]
lea ecx, [edi + edi]
mov edi, dword [esp + 0x28]
lea ebx, [eax + eax*2]
add ebx, ecx
add ecx, eax
mov eax, dword [esp + 0x10]
add ebx, edx
add ecx, edx
add edx, dword [esp + 8]
lea ebx, [ebp + ebx + 4]
sar ebx, 3
mov word [esi + edi], bx
mov ebx, ebp
mov edi, dword [esp + 0x1c]
add ebx, ebx
add ecx, ebx
add edx, ebx
lea ecx, [eax + ecx + 4]
sar ecx, 3
mov word [esi + edi], cx
lea ecx, [eax + eax]
mov eax, dword [esp]
mov edi, dword [esp + 0x14]
add edx, ecx
add eax, ebx
add eax, ecx
lea edx, [edi + edx + 4]
lea eax, [eax + edi*2]
sar edx, 3
lea eax, [edi + eax + 4]
mov edi, dword [esp + 0x24]
mov word [esi], dx
sar eax, 3
mov word [esi + edi], ax
lea esi, [esi]
add esi, dword [esp + 0x44]
sub dword [esp + 0x48], 1
jne 0x684bfb12
add esp, 0x98
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dword [esp + 0xb8], 4
je 0x684bfc60
mov dword [esp + 0x70], 0
mov eax, dword [esp + 0x58]
mov ebp, dword [esp + 0x18]
movzx ebx, word [esi + eax]
mov eax, dword [esp + 0x54]
mov dword [esp + 0xc], ebx
sub ebx, dword [esp + 8]
mov ecx, ebx
sar ebx, 0x1f
movzx edi, word [esi + eax]
xor ecx, ebx
sub ecx, ebx
mov dword [esp + 0x14], edi
cmp ecx, ebp
jg 0x684c01f0
sub edi, dword [esp + 0x10]
mov eax, edi
mov ecx, edi
sar eax, 0x1f
xor ecx, eax
sub ecx, eax
cmp ecx, ebp
setle cl
movzx ecx, cl
and ecx, dword [esp + 0x70]
cmp dword [esp + 0xb8], 6
mov ebp, ecx
jg 0x684c0200
test ebp, ebp
je 0x684bfc60
cmp dword [esp + 0xb8], 0x10
jne 0x684c01a0
mov ebx, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x74], 0
mov eax, dword [esp + 0x80]
movzx ebx, word [esi + ebx]
movzx ecx, word [esi + ecx]
movzx edi, word [esi + eax]
mov eax, dword [esp + 0x68]
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x84]
movzx ebx, word [esi + ebx]
movzx eax, word [esi + eax]
mov dword [esp + 0x2c], edi
movzx ecx, word [esi + ecx]
sub edi, dword [esp]
mov dword [esp + 0x50], ebx
mov ebx, edi
sar ebx, 0x1f
mov dword [esp + 0x34], ecx
mov ecx, edi
mov edi, dword [esp + 0x38]
xor ecx, ebx
mov dword [esp + 0x5c], eax
sub ecx, ebx
cmp ecx, edi
jg 0x684bfd86
sub eax, dword [esp]
mov ecx, eax
sar eax, 0x1f
xor ecx, eax
sub ecx, eax
mov eax, edi
cmp ecx, edi
jle 0x684c0250
mov ecx, dword [esp + 0xc]
sub ecx, dword [esp]
mov ebx, ecx
sar ebx, 0x1f
xor ecx, ebx
sub ecx, ebx
cmp ecx, edx
cmovl ecx, edx
xor edi, edi
cmp dword [esp + 0x38], ecx
jge 0x684c03b0
mov ecx, dword [esp + 0x3c]
sub ecx, dword [esp]
mov ebx, ecx
mov eax, dword [esp + 0x38]
sar ebx, 0x1f
xor ecx, ebx
sub ecx, ebx
cmp ecx, eax
jg 0x684c00c4
mov ecx, dword [esp + 0x20]
sub ecx, dword [esp + 4]
mov ebx, ecx
sar ebx, 0x1f
xor ecx, ebx
sub ecx, ebx
cmp ecx, eax
jg 0x684c00c4
cmp dword [esp + 0xb8], 0x10
jne 0x684c0411
mov eax, dword [esp + 0x74]
and eax, edi
mov dword [esp + 0x40], eax
je 0x684c0411
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x5c]
mov ebx, dword [esp + 0x30]
mov ebp, dword [esp + 4]
lea edx, [edi*8]
sub edx, edi
lea ecx, [ebx + ebx]
mov edi, dword [esp + 0x3c]
lea edx, [edx + eax*2]
lea ebx, [edx + ecx]
add ebx, edi
add ebx, dword [esp + 0xc]
add ebx, dword [esp + 8]
add ebx, dword [esp]
lea ebx, [ebp + ebx + 8]
mov ebp, dword [esp + 0x68]
sar ebx, 4
mov word [esi + ebp], bx
lea ebx, [edi + edi]
mov edi, dword [esp + 0x2c]
lea ebp, [edi + edi]
mov edi, dword [esp + 0x10]
sub edx, ebp
mov ebp, dword [esp + 0x60]
add edx, ecx
add edx, ebx
add edx, dword [esp + 0xc]
add edx, dword [esp + 8]
add edx, dword [esp]
add edx, dword [esp + 4]
lea edx, [edi + edx + 8]
mov edi, dword [esp + 0xc]
sar edx, 4
mov word [esi + ebp], dx
mov edx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x78]
lea edx, [eax + edx*4]
lea eax, [edi + edi]
mov edi, dword [esp + 0x14]
add ecx, edx
sub edx, dword [esp + 0x2c]
add ecx, ebx
add ecx, eax
add ecx, dword [esp + 8]
add ecx, dword [esp]
add ecx, dword [esp + 4]
add ecx, dword [esp + 0x10]
lea ecx, [edi + ecx + 8]
sar ecx, 4
mov word [esi + ebp], cx
mov ecx, dword [esp + 8]
add ecx, ecx
mov edi, ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x70], edi
add ecx, edx
add ecx, ebx
add ecx, eax
add ecx, edi
mov edi, dword [esp]
add ecx, edi
add ecx, dword [esp + 4]
mov ebx, dword [esp + 0x20]
add ecx, dword [esp + 0x10]
add ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0x58]
lea ecx, [ebx + ecx + 8]
lea ebx, [edi + edi]
mov edi, dword [esp + 0x3c]
sar ecx, 4
sub edx, dword [esp + 0x2c]
mov word [esi + ebp], cx
mov ecx, dword [esp + 0x30]
mov ebp, dword [esp + 0x28]
add ecx, edx
sub edx, dword [esp + 0x2c]
add edx, dword [esp + 0x30]
add ecx, edi
add edx, edi
add edx, dword [esp + 0xc]
add edx, dword [esp + 0x70]
add ecx, eax
mov eax, dword [esp + 0x4c]
add ecx, dword [esp + 0x70]
add edx, ebx
add ecx, ebx
add ecx, dword [esp + 4]
add ecx, dword [esp + 0x10]
add ecx, dword [esp + 0x14]
add ecx, dword [esp + 0x20]
lea ecx, [eax + ecx + 8]
sar ecx, 4
mov word [esi + ebp], cx
mov ebp, dword [esp + 4]
lea ecx, [ebp + ebp]
mov ebp, dword [esp + 0x1c]
add edx, ecx
add edx, dword [esp + 0x10]
add edx, dword [esp + 0x14]
add edx, dword [esp + 0x20]
add edx, eax
mov eax, dword [esp + 0x50]
lea edx, [eax + edx + 8]
sar edx, 4
mov word [esi + ebp], dx
mov edx, dword [esp + 0x10]
add edx, edx
mov ebp, edx
mov edx, dword [esp + 0x30]
add edx, dword [esp + 0x5c]
add edx, edi
add edx, dword [esp + 0xc]
mov eax, dword [esp + 8]
mov dword [esp + 0x70], ebp
add edx, eax
add edx, ebx
mov ebx, dword [esp + 0x14]
add edx, ecx
add edx, ebp
mov ebp, dword [esp + 0x34]
add edx, dword [esp + 0x14]
add ebx, ebx
add edx, dword [esp + 0x20]
add edx, dword [esp + 0x4c]
add edx, dword [esp + 0x50]
lea edx, [ebp + edx + 8]
sar edx, 4
mov word [esi], dx
mov edx, dword [esp + 0x30]
add edx, edi
add edx, dword [esp + 0xc]
add edi, dword [esp + 0xc]
add edx, eax
mov eax, dword [esp]
add edx, eax
add edx, ecx
add edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x20]
add edx, ebx
add edx, dword [esp + 0x20]
add edx, dword [esp + 0x4c]
add edx, dword [esp + 0x50]
add ecx, ecx
lea edx, [edx + ebp*2 + 8]
mov ebp, dword [esp + 0x24]
sar edx, 4
mov word [esi + ebp], dx
mov edx, dword [esp + 8]
mov ebp, dword [esp + 0x54]
add edx, edi
mov edi, dword [esp + 0x34]
add edx, eax
add edx, dword [esp + 4]
add edx, dword [esp + 0x70]
add edx, ebx
mov eax, dword [esp + 0x4c]
add edx, ecx
add edx, eax
add edx, dword [esp + 0x50]
add eax, eax
lea edx, [edx + edi*2]
lea edx, [edi + edx + 8]
sar edx, 4
mov word [esi + ebp], dx
mov edx, dword [esp + 0xc]
add edx, dword [esp + 8]
add edx, dword [esp]
add edx, dword [esp + 4]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x10], eax
mov ebp, dword [esp + 0x7c]
add edx, edi
add edx, ebx
mov ebx, dword [esp + 0x34]
add edx, ecx
add edx, eax
mov eax, dword [esp + 0x50]
add edx, eax
lea edx, [edx + ebx*4 + 8]
mov ebx, dword [esp + 8]
add ebx, dword [esp]
sar edx, 4
add ebx, dword [esp + 4]
mov word [esi + ebp], dx
mov ebp, dword [esp + 0x14]
add ebx, edi
lea edx, [eax + eax]
mov eax, dword [esp + 0x64]
add ebx, ebp
add ecx, ebx
mov ebx, dword [esp + 0x34]
add ecx, dword [esp + 0x10]
add ecx, edx
lea ecx, [ecx + ebx*4]
lea ecx, [ebx + ecx + 8]
sar ecx, 4
mov word [esi + eax], cx
mov eax, dword [esp]
add eax, dword [esp + 4]
add eax, edi
mov edi, dword [esp + 0x10]
add eax, ebp
add eax, dword [esp + 0x20]
add edi, eax
add edi, edx
lea eax, [edi + ebx*4]
mov edi, dword [esp + 0x6c]
lea eax, [eax + ebx*2]
lea eax, [ebx + eax + 8]
sar eax, 4
mov word [esi + edi], ax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x74], eax
jmp 0x684bfc60
xor ecx, ecx
cmp dword [esp + 0xb8], 6
mov dword [esp + 0x40], 0
je 0x684bfbd0
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x94]
mov ecx, edi
sub ecx, dword [esp]
lea ecx, [ecx + ecx*2]
cmp edx, eax
jle 0x684c02c0
mov eax, dword [esp + 0x90]
mov ebx, dword [esp + 8]
sub ebx, dword [esp + 0x10]
mov edx, eax
cmp ebx, eax
jl 0x684c011a
mov eax, dword [esp + 0x8c]
mov edx, ebx
cmp ebx, eax
cmovg edx, eax
mov eax, dword [esp + 0x90]
add ecx, edx
mov ebx, eax
cmp ecx, eax
jl 0x684c0137
mov eax, dword [esp + 0x8c]
mov ebx, ecx
cmp ecx, eax
cmovg ebx, eax
mov eax, dword [esp + 0x8c]
lea ecx, [ebx + 4]
cmp ecx, eax
cmovg ecx, eax
add ebx, 3
mov edx, ebx
sar ecx, 3
cmp ebx, eax
cmovg edx, eax
mov eax, dword [esp]
xor ebx, ebx
sar edx, 3
add eax, edx
js 0x684c0170
cmp eax, dword [esp + 0xbc]
cmovg eax, dword [esp + 0xbc]
mov ebx, eax
mov eax, dword [esp + 0x1c]
xor edx, edx
mov word [esi + eax], bx
mov eax, dword [esp + 4]
sub eax, ecx
js 0x684c0193
cmp eax, dword [esp + 0xbc]
cmovg eax, dword [esp + 0xbc]
mov edx, eax
mov word [esi], dx
jmp 0x684bfc60
cmp dword [esp + 0xb8], 5
je 0x684bfbb3
mov ecx, dword [esp + 0xc]
sub ecx, dword [esp]
mov ebx, ecx
sar ebx, 0x1f
xor ecx, ebx
sub ecx, ebx
cmp ecx, edx
cmovl ecx, edx
xor edi, edi
cmp ecx, dword [esp + 0x38]
jle 0x684c03b0
nop
cmp dword [esp + 0xb8], 7
jg 0x684bfda7
mov ecx, edi
mov dword [esp + 0x40], edi
and ecx, 1
jmp 0x684bfbbb
xor ebp, ebp
cmp dword [esp + 0xb8], 6
jle 0x684bfc60
mov eax, dword [esp + 0x78]
mov edi, dword [esp + 0x7c]
movzx eax, word [esi + eax]
movzx edi, word [esi + edi]
mov dword [esp + 0x3c], eax
sub eax, dword [esp + 0xc]
mov ebx, eax
mov ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x20], edi
sar ebx, 0x1f
xor ecx, ebx
sub ecx, ebx
cmp ecx, eax
jg 0x684bfc60
sub edi, dword [esp + 0x14]
mov ebx, edi
mov ecx, edi
sar ebx, 0x1f
xor ecx, ebx
sub ecx, ebx
cmp ecx, eax
jg 0x684bfc60
jmp 0x684bfcee
mov ecx, dword [esp + 0x30]
sub ecx, dword [esp]
mov edi, ecx
sar edi, 0x1f
xor ecx, edi
sub ecx, edi
cmp ecx, eax
jg 0x684bfd86
mov ecx, dword [esp + 0x4c]
sub ecx, dword [esp + 4]
mov edi, ecx
sar edi, 0x1f
xor ecx, edi
sub ecx, edi
cmp ecx, eax
jg 0x684bfd86
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 4]
sub ecx, edi
mov ebx, ecx
sar ebx, 0x1f
xor ecx, ebx
sub ecx, ebx
cmp ecx, eax
jg 0x684bfd86
mov ecx, dword [esp + 0x34]
sub ecx, edi
mov ebx, ecx
sar ebx, 0x1f
xor ecx, ebx
sub ecx, ebx
xor ebx, ebx
cmp ecx, eax
setle bl
mov dword [esp + 0x74], ebx
jmp 0x684bfd86
mov edx, dword [esp + 0x10]
sub edx, edi
mov ebx, edx
sar ebx, 0x1f
xor edx, ebx
sub edx, ebx
cmp edx, eax
jg 0x684c00f7
mov eax, dword [esp + 0x90]
cmp eax, ecx
jle 0x684c0400
mov ecx, eax
mov eax, dword [esp + 0x8c]
lea edx, [ecx + 4]
cmp edx, eax
cmovg edx, eax
add ecx, 3
sar edx, 3
cmp ecx, eax
mov ebx, edx
mov edx, ecx
cmovg edx, eax
mov eax, dword [esp]
xor ecx, ecx
sar edx, 3
add eax, edx
js 0x684c0323
cmp eax, dword [esp + 0xbc]
cmovg eax, dword [esp + 0xbc]
mov ecx, eax
mov eax, dword [esp + 0x1c]
xor edx, edx
mov word [esi + eax], cx
mov eax, dword [esp + 4]
sub eax, ebx
js 0x684c0346
cmp eax, dword [esp + 0xbc]
cmovg eax, dword [esp + 0xbc]
mov edx, eax
mov word [esi], dx
mov ecx, dword [esp + 8]
lea edx, [ebx + 1]
xor eax, eax
sar edx, 1
add ecx, edx
js 0x684c0369
cmp ecx, dword [esp + 0xbc]
cmovg ecx, dword [esp + 0xbc]
mov eax, ecx
mov edi, dword [esp + 0x28]
mov word [esi + edi], ax
mov edi, dword [esp + 0x10]
xor eax, eax
sub edi, edx
mov edx, edi
js 0x684c038e
cmp edi, dword [esp + 0xbc]
cmovg edx, dword [esp + 0xbc]
mov eax, edx
mov edi, dword [esp + 0x24]
mov word [esi + edi], ax
jmp 0x684bfc60
mov dword [esp + 0x70], 1
jmp 0x684bfc92
mov ecx, dword [esp + 0x10]
sub ecx, dword [esp + 4]
xor edi, edi
mov ebx, ecx
mov eax, dword [esp + 0x38]
sar ebx, 0x1f
xor ecx, ebx
sub ecx, ebx
cmp ecx, eax
jg 0x684c01d0
mov ecx, dword [esp + 0x14]
sub ecx, dword [esp + 4]
mov ebx, ecx
sar ebx, 0x1f
xor ecx, ebx
sub ecx, ebx
xor ebx, ebx
cmp ecx, eax
setle bl
cmp dword [esp + 0xb8], 7
mov edi, ebx
jg 0x684bfda7
jmp 0x684c01de
mov eax, dword [esp + 0x8c]
cmp eax, ecx
cmovle ecx, eax
jmp 0x684c02e8
mov ecx, edi
and ecx, 1
test cl, cl
je 0x684c04fe
mov eax, dword [esp + 0x3c]
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 4]
lea edx, [eax + eax]
lea ecx, [edx + eax]
add edx, edi
lea ecx, [ecx + edi*2]
add ecx, dword [esp + 8]
add ecx, dword [esp]
mov edi, dword [esp + 8]
lea ecx, [ebx + ecx + 4]
mov ebx, dword [esp + 0x58]
sar ecx, 3
mov word [esi + ebx], cx
lea ecx, [edx + edi*2]
mov edi, dword [esp + 0x10]
sub edx, eax
add ecx, dword [esp]
add ecx, dword [esp + 4]
mov ebx, dword [esp + 0x28]
mov eax, dword [esp]
lea ecx, [edi + ecx + 4]
sar ecx, 3
add edx, dword [esp + 8]
mov word [esi + ebx], cx
lea edx, [edx + eax*2]
mov ebx, dword [esp + 0x14]
add edx, dword [esp + 4]
mov ecx, dword [esp + 0x1c]
add edx, edi
mov eax, dword [esp + 0xc]
lea edx, [ebx + edx + 4]
sar edx, 3
mov word [esi + ecx], dx
mov edx, dword [esp + 8]
mov ecx, dword [esp + 4]
add edx, eax
mov eax, dword [esp]
add edx, eax
lea edx, [edx + ecx*2]
mov ecx, dword [esp + 0x20]
add edx, edi
add edx, ebx
lea edx, [ecx + edx + 4]
sar edx, 3
mov word [esi], dx
mov edx, dword [esp + 8]
add edx, eax
add edx, dword [esp + 4]
mov eax, dword [esp + 0x24]
lea edx, [edx + edi*2]
add edx, ebx
lea edx, [edx + ecx*2 + 4]
sar edx, 3
mov word [esi + eax], dx
mov eax, dword [esp]
add eax, dword [esp + 4]
add eax, edi
mov edi, dword [esp + 0x54]
lea eax, [eax + ebx*2]
lea eax, [eax + ecx*2]
lea eax, [ecx + eax + 4]
sar eax, 3
mov word [esi + edi], ax
mov dword [esp + 0x40], ebp
jmp 0x684bfc60
mov eax, edi
mov dword [esp + 0x40], eax
jmp 0x684bfbbb