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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov esi, ecx
mov edi, dword [esp + 0x70]
cmp dword [esp + 0x6c], 0
je 0x408349
cmp esi, edi
je 0x4084ce
cmp edi, dword [esp + 0x74]
je 0x4084ce
lea eax, [esi + 1]
cmp eax, edi
je 0x408360
lea eax, [edi + 1]
mov ebx, dword [esp + 0x74]
cmp eax, ebx
je 0x40837c
mov ecx, edi
sub ecx, esi
mov edx, ebx
sub edx, edi
cmp ecx, edx
jne 0x40839d
mov ebp, edi
not ebp
add ebp, ebx
mov edx, esi
not edx
add edx, edi
cmp ebp, edx
mov eax, edx
cmovb eax, ebp
inc eax
mov ebx, edi
mov ecx, esi
mov dword [esp], eax
cmp eax, 8
jb 0x4084a9
cmp ebp, edx
cmovb edx, ebp
lea eax, [edi + edx]
inc eax
cmp eax, esi
jbe 0x4082b5
lea eax, [esi + edx]
inc eax
mov ebx, edi
mov ecx, esi
cmp eax, edi
ja 0x4084a9
xor edx, edx
mov ecx, dword [esp]
cmp ecx, 0x20
jb 0x40830f
mov edx, ecx
and edx, 0xffffffe0
xor eax, eax
nop word cs:[eax + eax]
movups xmm0, xmmword [esi + eax]
movups xmm1, xmmword [esi + eax + 0x10]
movups xmm2, xmmword [edi + eax]
movups xmm3, xmmword [edi + eax + 0x10]
movups xmmword [esi + eax], xmm2
movups xmmword [esi + eax + 0x10], xmm3
movups xmmword [edi + eax], xmm0
movups xmmword [edi + eax + 0x10], xmm1
add eax, 0x20
cmp edx, eax
jne 0x4082d0
cmp ecx, edx
je 0x4084ce
mov ecx, dword [esp]
test cl, 0x18
je 0x4084a2
mov eax, ecx
and eax, 0xfffffff8
lea ebx, [edi + eax]
lea ecx, [esi + eax]
nop word [eax + eax]
movsd xmm0, qword [esi + edx]
movsd xmm1, qword [edi + edx]
movsd qword [esi + edx], xmm1
movsd qword [edi + edx], xmm0
add edx, 8
cmp eax, edx
jne 0x408320
cmp dword [esp], eax
jne 0x4084a9
jmp 0x4084ce
sub edi, esi
push dword [esi + 0x7c]
push dword [esi + 0x78]
push edi
push esi
call fcn.004073d0
add esp, 0x10
jmp 0x408925
movzx ebx, byte [esi]
mov ebp, dword [esp + 0x74]
sub ebp, edi
push ebp
push edi
push esi
call sub.msvcrt.dll_memmove
add esp, 0xc
mov byte [esi + ebp], bl
jmp 0x4084ce
lea eax, [ebx - 1]
mov ecx, ebx
movzx ebx, byte [ebx - 1]
sub eax, esi
je 0x408396
sub ecx, eax
push eax
push esi
push ecx
call sub.msvcrt.dll_memmove
add esp, 0xc
mov byte [esi], bl
jmp 0x4084ce
mov ebx, ecx
nop
mov eax, ebx
mov ebx, edx
cdq
idiv ebx
test edx, edx
jne 0x4083a0
test ebx, ebx
je 0x4084ce
lea eax, [esi + ebx]
test bl, 1
jne 0x4083bf
mov edi, eax
jmp 0x4083fd
lea edi, [eax - 1]
movzx edx, byte [eax - 1]
mov byte [esp + 4], dl
lea ebp, [eax + ecx]
dec ebp
mov eax, edi
mov dword [esp], eax
mov eax, ebp
movzx edx, byte [ebp]
mov ebp, dword [esp]
mov byte [ebp], dl
mov edx, dword [esp + 0x74]
sub edx, eax
mov ebp, ecx
sub ebp, edx
lea edx, [eax + ecx]
lea ebp, [esi + ebp]
cmovl ebp, edx
cmp ebp, edi
jne 0x4083d0
movzx edx, byte [esp + 4]
mov byte [eax], dl
cmp ebx, 1
je 0x4084ce
nop word cs:[eax + eax]
lea ebx, [edi - 1]
movzx eax, byte [edi - 1]
mov byte [esp + 4], al
mov dword [esp], edi
lea eax, [edi + ecx]
dec eax
mov ebp, ebx
mov edi, esi
nop word cs:[eax + eax]
mov edx, ebp
mov ebp, eax
movzx eax, byte [eax]
mov byte [edx], al
mov eax, dword [esp + 0x74]
sub eax, ebp
mov edx, ecx
sub edx, eax
lea esi, [ebp + ecx]
lea eax, [edi + edx]
cmovl eax, esi
cmp eax, ebx
jne 0x408430
movzx eax, byte [esp + 4]
mov byte [ebp], al
mov eax, dword [esp]
lea edx, [eax - 2]
movzx ebx, byte [eax - 2]
lea ebp, [eax + ecx]
add ebp, 0xfffffffe
mov eax, edx
nop dword [eax + eax]
mov esi, eax
mov eax, ebp
mov bh, byte [ebp]
mov byte [esi], bh
mov esi, dword [esp + 0x74]
sub esi, ebp
mov ebp, ecx
sub ebp, esi
lea esi, [eax + ecx]
lea ebp, [edi + ebp]
cmovl ebp, esi
cmp ebp, edx
jne 0x408470
mov byte [eax], bl
mov eax, edx
cmp edx, edi
mov esi, edi
mov edi, edx
jne 0x408410
jmp 0x4084ce
lea ecx, [esi + edx]
add edx, edi
mov ebx, edx
inc ebx
inc ecx
nop dword [eax + eax]
movzx eax, byte [ecx - 1]
movzx edx, byte [ebx - 1]
mov byte [ecx - 1], dl
mov byte [ebx - 1], al
cmp ecx, edi
je 0x4084ce
lea eax, [ebx + 1]
inc ecx
cmp ebx, dword [esp + 0x74]
mov ebx, eax
jne 0x4084b0
mov ebx, dword [esi + 0x4c]
mov ebp, dword [esi + 0x48]
mov eax, dword [esi + 0x40]
add eax, ebp
mov edi, dword [esi + 0x44]
adc edi, ebx
mov ecx, dword [esi + 0x58]
mov dword [esp + 4], ecx
add eax, ecx
mov ecx, dword [esi + 0x5c]
mov dword [esp + 0x10], ecx
adc edi, ecx
mov ecx, dword [esi + 8]
mov dword [esp + 8], ecx
add eax, ecx
mov ecx, dword [esi + 0xc]
mov dword [esp + 0xc], ecx
adc edi, ecx
mov ecx, esi
mov esi, edi
shld esi, eax, 0x1b
shrd edi, eax, 5
mov edx, 0xbe98f273
mov eax, edi
mul edx
mov dword [esp + 0x2c], eax
imul eax, edi, 0xb492b66f
add eax, edx
imul edx, esi, 0xbe98f273
add edx, eax
mov edi, edx
mov eax, dword [ecx + 0x60]
mov dword [esp + 0x14], eax
add ebp, eax
mov eax, dword [ecx + 0x64]
mov dword [esp], eax
adc ebx, eax
mov eax, dword [ecx + 0x30]
mov dword [esp + 0x1c], eax
add ebp, eax
mov eax, dword [ecx + 0x34]
mov dword [esp + 0x4c], eax
adc ebx, eax
mov esi, ebx
shld esi, ebp, 0x16
shrd ebx, ebp, 0xa
mov eax, ebx
mov edx, 0xbe98f273
mul edx
imul ebx, ebx, 0xb492b66f
add ebx, edx
imul esi, esi, 0xbe98f273
add esi, ebx
mov edx, ecx
mov dword [esp + 0x18], ecx
mov ecx, dword [ecx + 0x74]
mov dword [esp + 0x24], ecx
xor edi, ecx
mov dword [esp + 0x34], edi
mov ecx, dword [edx + 0x70]
mov dword [esp + 0x20], ecx
xor dword [esp + 0x2c], ecx
add eax, dword [esp + 4]
adc esi, dword [esp + 0x10]
mov ecx, dword [edx + 0x28]
mov dword [esp + 0x28], ecx
add eax, ecx
mov dword [esp + 0x30], eax
mov ecx, dword [edx + 0x2c]
mov dword [esp + 0x48], ecx
adc esi, ecx
mov dword [esp + 0x10], esi
mov dword [edx + 0x48], eax
mov dword [edx + 0x4c], esi
mov ebx, dword [edx + 0x68]
mov ecx, dword [edx + 0x50]
add ecx, ebx
mov esi, dword [edx + 0x6c]
mov dword [esp + 4], esi
mov eax, dword [edx + 0x54]
adc eax, esi
mov edi, eax
shrd eax, ecx, 1
mov esi, eax
mov dword [esp + 0x54], eax
mov ebp, 0xbe98f273
mul ebp
mov dword [esp + 0x3c], eax
shld edi, ecx, 0x1f
mov dword [esp + 0x50], edi
imul eax, esi, 0xb492b66f
add eax, edx
imul ecx, edi, 0xbe98f273
add ecx, eax
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x14]
mov eax, ecx
mul ebp
imul esi, ecx, 0xb492b66f
add esi, edx
imul ebp, dword [esp], 0xbe98f273
add ebp, esi
add ebx, dword [esp + 0x2c]
mov edx, dword [esp + 4]
adc edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
add eax, dword [ecx]
adc ebp, dword [ecx + 4]
add ebx, eax
mov esi, eax
mov dword [esp + 0x14], eax
adc edx, ebp
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x44], eax
add ebx, eax
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0x40], eax
adc edx, eax
mov edi, ebx
shld edi, edx, 0xb
shld edx, ebx, 0xb
mov dword [esp + 4], edx
mov eax, dword [esp + 8]
add eax, esi
mov ebx, dword [esp + 0xc]
adc ebx, ebp
mov edx, dword [ecx + 0x10]
add eax, edx
mov esi, dword [ecx + 0x14]
mov dword [esp], esi
adc ebx, esi
mov esi, ebx
mov dword [esp + 0xc], ebx
shld esi, eax, 0x14
mov ecx, eax
mov dword [esp + 8], eax
shld ecx, ebx, 0x14
mov eax, dword [esp + 4]
add eax, dword [esp + 0x14]
adc edi, ebp
add eax, ecx
mov dword [esp + 4], eax
adc edi, esi
mov dword [esp + 0x14], edi
mov ebx, dword [esp + 8]
add ebx, dword [esp + 0x44]
mov dword [esp + 8], ebx
mov esi, dword [esp + 0xc]
adc esi, dword [esp + 0x40]
mov dword [esp + 0xc], esi
mov ebp, dword [esp + 0x18]
mov dword [ebp + 0x60], eax
mov dword [ebp + 0x64], edi
mov dword [ebp + 0x58], ebx
mov dword [ebp + 0x5c], esi
mov ecx, dword [esp + 0x20]
add ecx, dword [esp + 0x3c]
mov edi, dword [esp + 0x24]
adc edi, dword [esp + 0x38]
add edx, dword [esp + 0x30]
mov esi, dword [esp]
adc esi, dword [esp + 0x10]
add ecx, dword [ebp + 0x20]
adc edi, dword [ebp + 0x24]
add edx, ecx
adc esi, edi
mov eax, dword [ebp + 0x38]
mov dword [esp + 0x24], eax
add edx, eax
mov eax, dword [ebp + 0x3c]
mov dword [esp + 0x20], eax
adc esi, eax
mov eax, edx
shld eax, esi, 0xb
shld esi, edx, 0xb
mov dword [esp], esi
mov esi, dword [esp + 0x28]
add esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x48]
adc ebx, dword [esp + 0x4c]
add esi, ecx
mov dword [esp + 0x28], esi
adc ebx, edi
mov edx, ebx
shld edx, esi, 0x14
shld esi, ebx, 0x14
mov ebp, dword [esp]
add ebp, ecx
adc eax, edi
add ebp, esi
mov dword [esp], ebp
adc eax, edx
mov dword [esp + 0x1c], eax
mov esi, dword [esp + 0x28]
add esi, dword [esp + 0x24]
adc ebx, dword [esp + 0x20]
mov eax, dword [esp + 8]
xor eax, esi
mov ecx, 0xeb382d69
mov edi, eax
mul ecx
mov ebp, eax
imul eax, edi, 0x9ddfea08
add eax, edx
mov ecx, dword [esp + 0xc]
xor ecx, ebx
imul ecx, ecx, 0xeb382d69
add ecx, eax
mov edx, dword [esp + 0x18]
mov eax, dword [esp]
mov dword [edx + 0x70], eax
mov eax, dword [esp + 0x1c]
mov dword [edx + 0x74], eax
mov dword [edx + 0x68], esi
xor ebp, esi
mov dword [edx + 0x6c], ebx
xor ebx, ecx
shr ecx, 0xf
xor ebp, ecx
mov eax, ebp
mov ecx, 0xeb382d69
mul ecx
mov esi, 0xeb382d69
imul edi, ebx, 0xeb382d69
add edi, edx
imul ecx, ebp, 0x9ddfea08
add edi, ecx
imul ecx, edi, 0xeb382d69
shr edi, 0xf
xor edi, eax
mov eax, edi
mul esi
mov dword [esp + 8], eax
mov ebp, edx
mov esi, dword [esp + 0x6c]
sub esi, dword [esp + 0x18]
add esi, dword [esp + 0x70]
add ebp, ecx
mov eax, dword [esp + 0x10]
imul ebx, eax, 0xbe98f273
shr eax, 0xf
xor eax, dword [esp + 0x30]
mov dword [esp + 0x10], eax
mov ecx, 0xbe98f273
mul ecx
imul ecx, edi, 0x9ddfea08
add ebp, ecx
add edx, ebx
imul ecx, dword [esp + 0x10], 0xb492b66f
add edx, ecx
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x18]
mov dword [ecx + 0x50], ebx
mov edi, eax
add edi, ebx
mov eax, dword [esp + 0x34]
mov dword [ecx + 0x54], eax
adc edx, eax
add edi, dword [esp + 8]
mov dword [esp + 8], edi
adc edx, ebp
mov dword [esp + 0xc], edx
mov eax, dword [esp + 4]
mov ebp, dword [esp]
xor eax, ebp
mov ebx, eax
mov edx, 0xeb382d69
mul edx
mov edi, eax
imul eax, ebx, 0x9ddfea08
add eax, edx
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
xor edx, ebx
imul edx, edx, 0xeb382d69
add edx, eax
xor edi, ebp
xor ebx, edx
shr edx, 0xf
xor edi, edx
mov eax, edi
mov edx, 0xeb382d69
mul edx
imul ebx, ebx, 0xeb382d69
add ebx, edx
imul edx, edi, 0x9ddfea08
add ebx, edx
imul ebp, ebx, 0xeb382d69
shr ebx, 0xf
xor ebx, eax
mov eax, ebx
mov edx, 0xeb382d69
mul edx
mov dword [esp], eax
mov edi, edx
add edi, ebp
imul eax, ebx, 0x9ddfea08
add edi, eax
add esi, dword [esp + 0x54]
mov ebp, dword [esp + 0x50]
adc ebp, 0
mov eax, esi
mov edx, 0xbe98f273
mul edx
mov ebx, eax
mov eax, dword [esp + 0x38]
mov dword [ecx + 0x44], eax
mov eax, dword [esp + 0x3c]
mov dword [ecx + 0x40], eax
imul eax, esi, 0xb492b66f
add eax, edx
imul ebp, ebp, 0xbe98f273
add ebp, eax
add ebx, dword [esp]
adc ebp, edi
mov eax, dword [esp + 8]
xor eax, ebx
mov edi, eax
mov ecx, 0xeb382d69
mul ecx
mov esi, eax
imul eax, edi, 0x9ddfea08
add eax, edx
mov ecx, dword [esp + 0xc]
xor ecx, ebp
imul ecx, ecx, 0xeb382d69
add ecx, eax
xor esi, ebx
xor ebp, ecx
shr ecx, 0xf
xor esi, ecx
mov eax, esi
mov ecx, 0xeb382d69
mul ecx
imul ecx, ebp, 0xeb382d69
add ecx, edx
imul edx, esi, 0x9ddfea08
add ecx, edx
shr ecx, 0xf
xor ecx, eax
imul eax, ecx, 0xeb382d69
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret 0xc