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

Disassembly:
sub esp, 0xa4
push ebx
push ebp
mov ebp, dword [ecx + 4]
push esi
push edi
xor edi, edi
xor esi, esi
cmp ebp, edi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], 1
je 0x44097a
lea eax, [esp + 0x50]
mov dword [esp + 0x2c], eax
jmp 0x44037b
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
cmp dword [ebp + 0xc], edi
jne 0x44095f
cmp esi, 8
mov dword [esp + 0x1c], edi
mov dword [esp + 0x14], edi
jge 0x4403b0
call fcn.0043ff10
cmp eax, edi
mov dword [esp + 0x14], eax
je 0x4403b0
mov ecx, dword [esp + 0x2c]
inc esi
mov dword [esp + 0x18], esi
mov dword [ecx], eax
add ecx, 4
mov dword [esp + 0x2c], ecx
mov eax, dword [ebp + 0x1c]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
mov eax, dword [eax]
mov ecx, eax
mov edx, eax
sar ecx, 2
and dl, 2
and ecx, 3
neg dl
sbb edx, edx
and al, 1
neg edx
inc edx
mov ecx, dword [ecx*4 + 0x4c6f50]
neg al
sbb eax, eax
mov dword [esp + 0x30], ecx
neg eax
inc eax
imul edx, eax
mov eax, dword [esp + 0x10]
mov esi, edx
mov dword [esp + 0x28], esi
mov ebx, dword [eax + 0xc]
mov eax, dword [ebp + 0x74]
sar ebx, cl
test eax, eax
je 0x440653
mov ecx, dword [esp + 0xb8]
test ebx, ebx
mov dword [ebp + ecx*4 + 0x80], 0
jle 0x440590
mov edx, dword [ebp + 0x108]
cmp ebx, edx
jge 0x44042c
mov edx, ebx
test edx, edx
jle 0x4404c1
mov al, byte [ebp + 0x112]
test al, al
je 0x440461
test edi, edi
je 0x440482
mov ecx, edx
xor eax, eax
imul ecx, esi
mov esi, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, esi
mov esi, dword [esp + 0x28]
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x20]
jmp 0x440482
mov ecx, dword [ebp + 0x128]
push edx
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, eax
test edx, edx
jne 0x440482
mov al, byte [ebp + 0x113]
test al, al
jne 0x440590
mov al, byte [ebp + 0x113]
test al, al
jne 0x44049a
mov eax, dword [esp + 0xb8]
add dword [ebp + eax*4 + 0x80], edx
test edi, edi
je 0x4404a9
mov ecx, edx
imul ecx, esi
add edi, ecx
mov dword [esp + 0x20], edi
mov ecx, dword [ebp + 0x108]
sub ebx, edx
sub ecx, edx
test edx, edx
mov dword [ebp + 0x108], ecx
jg 0x440588
push ebp
call dword [ebp + 0x74]
add esp, 4
test eax, eax
mov eax, dword [ebp + 0x108]
sete dl
test eax, eax
mov byte [ebp + 0x113], dl
jg 0x440529
mov al, byte [ebp + 0x110]
test al, al
je 0x440513
mov eax, dword [ebp + 0x10c]
mov byte [ebp + 0x110], 0
test eax, eax
jge 0x440520
neg eax
mov dword [ebp + 0x108], eax
mov dword [ebp + 0x10c], 0
mov byte [ebp + 0x112], 1
jmp 0x440530
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx + 4]
mov dword [ebp + 0x108], edx
mov byte [ebp + 0x112], 1
jmp 0x440530
mov byte [ebp + 0x112], 0
mov ecx, dword [ebp + 0x12c]
test ecx, ecx
je 0x440588
mov eax, dword [ebp + 0x108]
test eax, eax
je 0x440588
mov al, byte [ebp + 0x112]
test al, al
jne 0x440588
push 1
call fcn.00455af0
test eax, eax
je 0x440588
cmp dword [eax + 0x88], 9
jne 0x440588
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx]
mov ecx, dword [ecx + 4]
sar edx, 2
and edx, 3
mov dword [esp + 0x4c], ecx
mov ecx, dword [edx*4 + 0x4c6f50]
mov edx, dword [esp + 0x4c]
shl edx, cl
add dword [eax + 0xa0], edx
test ebx, ebx
jg 0x440420
mov al, byte [ebp + 0x111]
test al, al
je 0x440609
mov eax, dword [esp + 0x10]
mov byte [ebp + 0x111], 0
xor edx, edx
mov dword [esp + 0x70], 2
mov eax, dword [eax + 0xc]
mov dword [esp + 0x74], edx
cmp eax, 0x2b11
mov word [esp + 0x7a], dx
mov word [esp + 0x78], dx
mov dword [esp + 0x7c], eax
jl 0x4405d3
mov dword [esp + 0x7c], 0x2b11
mov ecx, 0x8000
mov word [esp + 0x82], cx
mov word [esp + 0x80], cx
cmp dword [esp + 0x14], edx
je 0x440609
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x70]
push ecx
push 0
push eax
mov eax, dword [ebp + 0x1c]
push edx
mov ecx, dword [eax]
push ecx
call fcn.004415a0
add esp, 0x14
mov eax, dword [ebp + 0x78]
test eax, eax
je 0x4407a0
mov ecx, dword [eax + 0xa4]
test ecx, ecx
je 0x4407a0
mov dword [ebp + 0xc], 1
mov edx, dword [eax + 0x34]
mov ecx, dword [edx + 0x2bc]
test ecx, ecx
je 0x4407a0
mov eax, dword [ebp + 0x12c]
test eax, eax
je 0x4407a0
push eax
call fcn.00469580
jmp 0x4407a0
test ebx, ebx
jle 0x4407a0
mov edi, dword [esp + 0x20]
mov esi, dword [ebp + 0x11c]
mov ecx, dword [ebp + 0x118]
sub esi, ecx
cmp ebx, esi
jge 0x440673
mov esi, ebx
test esi, esi
jg 0x4406bc
mov ecx, dword [ebp + 0x68]
dec ecx
mov eax, ecx
mov dword [ebp + 0x68], ecx
test eax, eax
jle 0x440734
mov eax, dword [ebp + 0x6c]
mov ecx, dword [esp + 0x30]
sar eax, cl
mov ecx, dword [ebp + 0x128]
push 1
mov dword [ebp + 0x118], eax
mov eax, dword [esp + 0x28]
mov edx, dword [ecx]
push eax
call dword [edx]
mov ecx, dword [ebp + 0x128]
mov eax, dword [ebp + 0x118]
push eax
push 0
mov edx, dword [ecx]
call dword [edx + 4]
mov ecx, dword [ebp + 0x128]
push esi
push edi
mov edx, dword [ecx]
call dword [edx + 4]
test edi, edi
je 0x4406d6
mov eax, esi
imul eax, dword [esp + 0x28]
add edi, eax
mov ecx, dword [ebp + 0x118]
mov eax, dword [ebp + 0x12c]
sub ebx, esi
add ecx, esi
test eax, eax
mov dword [ebp + 0x118], ecx
je 0x440726
push 1
mov ecx, eax
call fcn.00455af0
test eax, eax
je 0x440726
cmp dword [eax + 0x88], 9
jne 0x440726
mov ecx, dword [ebp + 0x1c]
mov esi, dword [ebp + 0x118]
mov edx, dword [ecx]
sar edx, 2
and edx, 3
mov ecx, dword [edx*4 + 0x4c6f50]
shl esi, cl
mov dword [eax + 0xa0], esi
test ebx, ebx
jg 0x44065f
mov dword [esp + 0x20], edi
jmp 0x4407a0
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x20], edi
test eax, eax
je 0x440762
mov eax, dword [eax + 4]
test eax, eax
je 0x440762
mov eax, dword [eax + 0x2bc]
test eax, eax
je 0x440762
mov edx, dword [ebp + 0x12c]
test edx, edx
je 0x440762
push edx
mov ecx, eax
call fcn.00469580
test edi, edi
je 0x440799
mov eax, dword [esp + 0x24]
mov ecx, ebx
imul ecx, dword [esp + 0x28]
mov eax, dword [eax]
mov edi, dword [esp + 0x20]
not eax
and eax, 2
mov edx, ecx
shl eax, 6
mov bl, al
mov bh, bl
mov eax, ebx
shl eax, 0x10
mov ax, bx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov dword [ebp + 0xc], 1
mov eax, dword [esp + 0x14]
test eax, eax
je 0x44082e
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x14]
lea edi, [esp + 0x48]
mov esi, dword [eax + 0xc]
sar esi, cl
mov ecx, dword [esp + 0x28]
dec esi
imul esi, ecx
mov ebx, ecx
add esi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp + 0x120]
test ecx, ecx
jne 0x440803
mov ecx, ebx
mov esi, edx
lea edi, [ebp + 0x124]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov dword [ebp + 0x120], 1
mov ecx, dword [eax + 0x354]
lea esi, [ebp + 0x124]
push esi
mov eax, dword [eax + 0xc]
push ecx
mov ecx, dword [esp + 0x2c]
mov ecx, dword [ecx]
and cl, 0xf
push ecx
push eax
push edx
call fcn.00441210
mov ecx, dword [esp + 0x5c]
add esp, 0x14
mov dword [esi], ecx
mov ecx, dword [ebp + 0x20]
lea eax, [ebp + 0x20]
test ecx, ecx
jle 0x440879
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x440864
mov edx, dword [ebp + 0x114]
push eax
mov eax, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x1c]
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 0x354]
push ecx
push edx
push eax
call fcn.004415a0
add esp, 0x14
mov ecx, dword [esp + 0x10]
mov eax, dword [ebp + 0x114]
mov edx, dword [ecx + 0xc]
add eax, edx
mov dword [ebp + 0x114], eax
mov eax, dword [esp + 0x14]
test eax, eax
je 0x44095f
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x44095f
mov ecx, dword [eax + 0x34]
mov edi, dword [eax + 0x70]
mov esi, dword [eax + 0x74]
add edi, 0x30
mov ebx, dword [ecx + 0x2bc]
mov ecx, 0x64
mov dword [esp + 0x34], ecx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x38], ecx
xor ecx, ecx
add ebx, 0xda8
cmp esi, ecx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x3c], ecx
jne 0x4408e1
add eax, 0xcc
lea edx, [esp + 0x34]
push eax
lea eax, [esp + 0x38]
push edx
push eax
call fcn.004400e0
add esp, 0xc
jmp 0x44091f
cmp esi, edi
je 0x44091f
mov ecx, dword [esi + 0x10]
xor eax, eax
mov al, byte [ecx + 0xb]
cmp eax, 0x62
je 0x4408fc
cmp eax, 6
je 0x4408fc
cmp eax, 0x61
jne 0x440918
mov edx, dword [esi + 0x20]
lea eax, [esp + 0x34]
add edx, 0xcc
lea ecx, [esp + 0x34]
push edx
push eax
push ecx
call fcn.004400e0
add esp, 0xc
mov esi, dword [esi + 4]
test esi, esi
jne 0x4408e1
lea edx, [esp + 0x34]
push ebx
lea eax, [esp + 0x38]
push edx
push eax
call fcn.004400e0
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x40]
push edx
mov eax, dword [ecx + 0x354]
mov edx, dword [ecx + 0xc]
push eax
sar eax, 2
and eax, 3
mov ecx, dword [eax*4 + 0x4c6f50]
mov eax, dword [esp + 0x28]
sar edx, cl
push edx
push eax
call fcn.004401d0
add esp, 0x1c
mov ebp, dword [ebp + 4]
xor edi, edi
cmp ebp, edi
jne 0x440373
cmp dword [esp + 0x1c], edi
je 0x44097f
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
inc dword [ecx + 8]
jmp 0x44098a
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
mov dword [ecx + 8], edi
mov eax, dword [ecx + 0x354]
mov edx, eax
not edx
test dl, 2
mov edx, dword [esp + 0xb8]
mov edx, dword [ecx + edx*4 + 0x28]
je 0x440ac7
cmp esi, edi
jne 0x4409c9
mov ecx, dword [ecx + 0x24]
mov eax, 0x80808080
mov edi, edx
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
jmp 0x440bd6
cmp esi, 1
jne 0x4409ee
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x50]
mov edi, edx
mov ecx, dword [eax + 0x24]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x440bd6
cmp esi, 2
jne 0x440a45
mov esi, dword [esp + 0x50]
mov ecx, edx
mov edx, dword [esp + 0x10]
test al, 1
mov edx, dword [edx + 0x20]
je 0x440a06
add edx, edx
mov eax, edx
dec edx
test eax, eax
je 0x440bd6
mov edi, dword [esp + 0x54]
sub edi, esi
inc edx
xor eax, eax
xor ebx, ebx
mov al, byte [edi + esi]
mov bl, byte [esi]
inc esi
lea eax, [eax + ebx - 0x80]
test eax, 0xffff00
je 0x440a3a
test eax, eax
setge al
dec eax
and al, 1
add eax, 0xff
mov byte [ecx], al
inc ecx
dec edx
jne 0x440a18
jmp 0x440bd6
mov ebx, dword [esp + 0x18]
lea esi, [esp + 0x50]
mov ecx, ebx
lea edi, [esp + 0x50]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x10]
mov ebp, edx
shl ebx, 7
mov ecx, dword [ecx + 0x20]
mov edx, 0x80
sub edx, ebx
test al, 1
je 0x440a6e
add ecx, ecx
mov eax, ecx
dec ecx
test eax, eax
je 0x440bd6
inc ecx
mov dword [esp + 0x1c], ecx
mov edi, dword [esp + 0x18]
mov ecx, edx
lea eax, [esp + edi*4 + 0x4c]
mov esi, dword [eax]
xor ebx, ebx
sub eax, 4
mov bl, byte [esi]
add ecx, ebx
inc esi
mov dword [eax + 4], esi
dec edi
test edi, edi
ja 0x440a88
test ecx, 0xffff00
je 0x440ab3
test ecx, ecx
setge cl
dec ecx
and cl, 1
add ecx, 0xff
mov eax, dword [esp + 0x1c]
mov byte [ebp], cl
inc ebp
dec eax
mov dword [esp + 0x1c], eax
jne 0x440a7e
jmp 0x440bd6
cmp esi, edi
jne 0x440ad5
mov ecx, dword [ecx + 0x24]
xor eax, eax
jmp 0x4409b4
cmp esi, 1
jne 0x440afa
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x50]
mov edi, edx
mov ecx, dword [eax + 0x24]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x440bd6
cmp esi, 2
jne 0x440b5d
mov esi, dword [esp + 0x50]
mov ecx, edx
mov edx, dword [esp + 0x10]
test al, 1
mov edx, dword [edx + 0x20]
je 0x440b12
add edx, edx
mov eax, edx
dec edx
test eax, eax
je 0x440bd6
mov edi, dword [esp + 0x54]
lea ebp, [edx + 1]
sub edi, esi
movsx eax, word [edi + esi]
movsx edx, word [esi]
add eax, edx
add esi, 2
movsx edx, ax
cmp edx, eax
je 0x440b52
xor edx, edx
test eax, eax
setge dl
dec edx
and edx, 0xffff0001
add edx, 0x7fff
mov word [ecx], dx
jmp 0x440b55
mov word [ecx], ax
add ecx, 2
dec ebp
jne 0x440b26
jmp 0x440bd6
mov ebx, dword [esp + 0x18]
lea esi, [esp + 0x50]
mov ecx, ebx
lea edi, [esp + 0x50]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x10]
mov edi, edx
test al, 1
mov ecx, dword [ecx + 0x20]
je 0x440b7c
add ecx, ecx
mov edx, ecx
dec ecx
test edx, edx
je 0x440bd6
inc ecx
mov dword [esp + 0x1c], ecx
xor esi, esi
lea eax, [esp + ebx*4 + 0x4c]
lea edx, [ebx]
mov ecx, dword [eax]
sub eax, 4
movsx ebp, word [ecx]
add ecx, 2
add esi, ebp
mov dword [eax + 4], ecx
dec edx
test edx, edx
ja 0x440b90
movsx eax, si
cmp eax, esi
je 0x440bc5
xor ecx, ecx
test esi, esi
setge cl
dec ecx
and ecx, 0xffff0001
add ecx, 0x7fff
mov word [edi], cx
jmp 0x440bc8
mov word [edi], si
mov eax, dword [esp + 0x1c]
add edi, 2
dec eax
mov dword [esp + 0x1c], eax
jne 0x440b88
mov edx, dword [esp + 0x10]
pop edi
pop esi
pop ebp
mov dword [edx + 0xac], 0
pop ebx
add esp, 0xa4
ret 4