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

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4978b8
push eax
mov dword fs:[0], esp
sub esp, 0x70
push ebx
push ebp
push esi
mov esi, dword [esp + 0x8c]
xor ebx, ebx
push edi
mov al, byte [esi + 0x1c]
mov edi, ecx
test al, 8
je 0x4193c1
cmp dword [esi + 0x14], ebx
jne 0x4198df
mov ebp, dword [esp + 0x94]
test byte [ebp + 0x1c], 8
je 0x4193d7
cmp dword [ebp + 0x14], ebx
jne 0x4198df
push ebp
mov ecx, esi
call fcn.0040909a
test eax, eax
jne 0x4198df
mov eax, dword [esi]
mov ecx, dword [ebp]
mov esi, dword [eax - 8]
mov ebp, dword [ecx - 8]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x60], ebp
lea eax, [esi + ebp]
cmp eax, 0x1388
mov dword [esp + 0x64], eax
jle 0x419415
cmp dword [esp + 0x98], ebx
je 0x4198df
call fcn.0041082a
mov edx, dword [eax + 0x24]
mov dword [esp + 0x54], edx
call fcn.0041082a
mov eax, dword [eax + 0x28]
dec eax
mov dword [0x4bcb64], eax
jns 0x419437
mov dword [0x4bcb64], ebx
lea ecx, [esp + 0x68]
call fcn.0041914a
push ebp
push esi
mov ecx, edi
mov dword [esp + 0x90], ebx
call fcn.004192fa
mov edx, dword [edi + 0x98]
mov ebx, dword [edi + 0xac]
mov ecx, esi
mov dword [esp + 0x24], edx
mov edi, edx
mov edx, ecx
xor eax, eax
mov dword [esp + 0x28], ebx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, ebp
xor eax, eax
mov edx, ecx
mov edi, ebx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
mov edx, dword [esp + 0x94]
and ecx, 3
cmp esi, ebp
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x90]
mov edx, dword [edx]
mov dword [esp + 0x30], edx
mov ecx, dword [eax]
mov dword [esp + 0x2c], ecx
mov ecx, esi
jl 0x4194ae
mov ecx, ebp
xor ebx, ebx
xor edi, edi
test ecx, ecx
mov dword [esp + 0x98], ecx
jle 0x4194f3
xor eax, eax
mov ecx, dword [esp + 0x2c]
mov cl, byte [eax + ecx]
cmp cl, byte [eax + edx]
jne 0x4194ec
mov ecx, dword [esp + 0x24]
inc ebx
mov byte [eax + ecx], 1
mov ecx, dword [esp + 0x28]
mov byte [eax + ecx], 1
mov ecx, dword [esp + 0x98]
movsx eax, bx
cmp eax, ecx
jl 0x4194bf
jmp 0x4194f3
mov ecx, dword [esp + 0x98]
movsx eax, bx
sub ecx, eax
test ecx, ecx
mov dword [esp + 0x98], ecx
jle 0x419545
xor eax, eax
jmp 0x41950b
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
neg eax
add ecx, eax
add edx, eax
mov cl, byte [ecx + esi - 1]
cmp cl, byte [edx + ebp - 1]
jne 0x419545
mov edx, dword [esp + 0x24]
lea ecx, [eax + edx]
mov edx, dword [esp + 0x28]
add eax, edx
inc edi
mov byte [ecx + esi - 1], 1
mov ecx, dword [esp + 0x98]
mov byte [eax + ebp - 1], 1
movsx eax, di
cmp eax, ecx
jl 0x419507
mov eax, ebp
mov ecx, esi
sub eax, edi
sub ecx, edi
push eax
push ebx
push ecx
push ebx
lea ecx, [esp + 0x78]
call fcn.004191ca
movsx eax, di
movsx ecx, bx
add eax, ecx
mov byte [esp + 0x1c], 1
test bx, bx
mov dword [esp + 0x20], eax
jg 0x419575
test di, di
jle 0x41957a
mov byte [esp + 0x1c], 2
lea edx, [esp + 0x34]
lea eax, [esp + 0x14]
push edx
lea ecx, [esp + 0x3c]
push eax
lea edx, [esp + 0x20]
push ecx
push edx
lea ecx, [esp + 0x78]
call fcn.0041922a
test eax, eax
je 0x419876
movsx ecx, word [esp + 0x18]
movsx eax, word [esp + 0x38]
movsx edx, word [esp + 0x14]
movsx ebp, word [esp + 0x34]
sub eax, ecx
sub ebp, edx
cmp eax, ebp
mov dword [esp + 0x3c], eax
mov dword [esp + 0x50], ebp
jge 0x4195c5
mov ebp, eax
mov esi, dword [0x4bcb64]
xor eax, eax
cmp ebp, 0x14
mov edx, esi
setg al
lea ecx, [ebp + 1]
mov dword [esp + 0x4c], edx
test eax, eax
mov dword [esp + 0x48], ecx
mov dword [esp + 0x44], eax
je 0x4195f2
lea eax, [ecx + edx]
cdq
sub eax, edx
mov ebp, eax
sar ebp, 1
cmp ebp, esi
mov dword [esp + 0x40], 0
jle 0x419849
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x419849
mov eax, dword [esp + 0x3c]
xor ebx, ebx
cmp ebp, eax
mov dword [esp + 0x98], ebx
jg 0x41981a
movsx edi, word [esp + 0x14]
movsx esi, word [esp + 0x18]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x50]
add esi, ebx
add edi, ecx
mov ecx, dword [esp + 0x30]
add esi, ebp
add esi, eax
add edi, ecx
mov dl, byte [esi]
mov byte [esp + 0x98], dl
mov dl, byte [edi]
mov byte [esi], 0
mov byte [esp + 0x13], dl
mov byte [edi], 0
movsx edx, word [esp + 0x18]
add edx, ebx
add edx, eax
movsx eax, word [esp + 0x14]
add eax, ecx
push edx
push eax
call fcn.0045fd6a
mov dl, byte [esp + 0xa0]
mov ecx, eax
mov al, byte [esp + 0x1b]
mov byte [esi], dl
mov edx, dword [esp + 0x38]
mov byte [edi], al
movsx edi, word [esp + 0x1c]
mov esi, ecx
add esp, 8
sub esi, edi
mov dword [esp + 0x58], ecx
sub esi, edx
test ecx, ecx
jne 0x4196b2
mov eax, dword [esp + 0x3c]
inc ebx
lea edx, [ebx + ebp]
cmp edx, eax
jle 0x419628
mov dword [esp + 0x98], ebx
jmp 0x419816
mov eax, dword [esp + 0x44]
mov dword [esp + 0x98], ebx
test eax, eax
je 0x4196de
mov eax, dword [esp + 0x48]
lea edx, [ebp + 1]
cmp edx, eax
jge 0x4196de
add eax, ebp
mov dword [esp + 0x4c], ebp
cdq
sub eax, edx
sar eax, 1
mov ebp, eax
jmp 0x419816
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x54]
add ecx, ebp
test eax, eax
mov dword [esp + 0x20], ecx
je 0x419725
movsx edi, word [esp + 0x18]
mov ecx, dword [esp + 0x2c]
add edi, ebx
add edi, ecx
test ebp, ebp
jle 0x419725
mov dword [esp + 0x40], ebp
movsx eax, byte [edi]
push eax
call fcn.00408faa
add esp, 4
test eax, eax
je 0x419719
dec dword [esp + 0x20]
mov eax, dword [esp + 0x40]
inc edi
dec eax
mov dword [esp + 0x40], eax
jne 0x419705
movsx edi, word [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
and eax, 0xff
add edi, ebx
mov bl, al
mov dword [esp + 0x40], eax
mov bh, bl
mov ecx, ebp
mov eax, ebx
add edi, edx
mov edx, ecx
shl eax, 0x10
mov ax, bx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
mov edx, dword [esp + 0x28]
and ecx, 3
rep stosb byte es:[edi], al
mov al, byte [esp + 0x40]
mov ecx, ebp
movsx edi, word [esp + 0x14]
mov bl, al
add edi, esi
mov bh, bl
add edi, edx
mov eax, ebx
mov edx, ecx
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 al, byte [esp + 0x1c]
inc al
mov byte [esp + 0x1c], al
jne 0x419799
mov byte [esp + 0x1c], 1
mov edi, dword [esp + 0x98]
test edi, edi
jle 0x4197c3
test esi, esi
jle 0x4197c3
mov eax, dword [esp + 0x14]
lea ecx, [esi + eax]
push ecx
push eax
mov eax, dword [esp + 0x20]
lea ecx, [esp + 0x70]
lea edx, [edi + eax]
push edx
push eax
call fcn.004191ca
movsx eax, word [esp + 0x18]
mov ecx, dword [esp + 0x38]
add eax, edi
movsx edx, cx
add eax, ebp
cmp eax, edx
jge 0x41980a
movsx edx, word [esp + 0x14]
mov eax, dword [esp + 0x34]
add edx, esi
movsx ebx, ax
add edx, ebp
cmp edx, ebx
jge 0x41980a
mov edx, dword [esp + 0x14]
push eax
lea eax, [esi + ebp]
add eax, edx
mov edx, dword [esp + 0x1c]
push eax
push ecx
lea ecx, [edi + ebp]
add ecx, edx
push ecx
lea ecx, [esp + 0x78]
call fcn.004191ca
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x40], 1
test ecx, ecx
jne 0x41983d
mov eax, dword [esp + 0x44]
test eax, eax
je 0x41983c
mov edx, dword [esp + 0x4c]
mov ecx, ebp
mov dword [esp + 0x48], ecx
lea eax, [edx + ebp]
cdq
sub eax, edx
sar eax, 1
mov ebp, eax
cmp ebp, ecx
je 0x419849
jmp 0x41983d
dec ebp
cmp ebp, dword [0x4bcb64]
jg 0x419602
lea eax, [esp + 0x34]
lea ecx, [esp + 0x14]
push eax
lea edx, [esp + 0x3c]
push ecx
lea eax, [esp + 0x20]
push edx
push eax
lea ecx, [esp + 0x78]
call fcn.0041922a
test eax, eax
jne 0x41959f
mov esi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x60]
call fcn.0041082a
mov ecx, dword [eax + 0x2c]
test ecx, ecx
jle 0x4198f9
mov eax, dword [esp + 0x20]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
shl eax, 3
cdq
idiv dword [esp + 0x64]
mov edi, eax
call fcn.0041082a
cmp edi, dword [eax + 0x2c]
jge 0x4198f9
mov eax, dword [esp + 0x90]
mov ecx, 1
mov dword [esp + 0x88], 0xffffffff
mov bl, byte [eax + 0x1c]
mov dword [eax + 0x14], ecx
or bl, 8
mov byte [eax + 0x1c], bl
mov eax, dword [esp + 0x94]
mov dl, byte [eax + 0x1c]
mov dword [eax + 0x14], ecx
or dl, 8
lea ecx, [esp + 0x68]
mov byte [eax + 0x1c], dl
call fcn.00470dbe
xor eax, eax
mov ecx, dword [esp + 0x80]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x7c
ret 0xc
lea ecx, [esi + esi*2]
lea edx, [ecx + ecx + 4]
push edx
call fcn.00476d86
mov ebx, dword [esp + 0x94]
add esp, 4
test eax, eax
je 0x419922
mov cl, byte [ebx + 0x1c]
mov dword [ebx + 0x14], eax
or cl, 8
mov byte [ebx + 0x1c], cl
jmp 0x419931
mov al, byte [ebx + 0x1c]
mov dword [ebx + 0x14], 0
and al, 0xf7
mov byte [ebx + 0x1c], al
mov eax, dword [esp + 0x24]
mov ecx, dword [ebx + 0x14]
push esi
push eax
push ecx
call fcn.0041927a
lea edx, [ebp + ebp*2]
lea eax, [edx + edx + 4]
push eax
call fcn.00476d86
mov edi, dword [esp + 0xa4]
add esp, 0x10
test eax, eax
je 0x41996a
mov cl, byte [edi + 0x1c]
mov dword [edi + 0x14], eax
or cl, 8
mov byte [edi + 0x1c], cl
jmp 0x419979
mov al, byte [edi + 0x1c]
mov dword [edi + 0x14], 0
and al, 0xf7
mov byte [edi + 0x1c], al
mov ecx, dword [esp + 0x28]
mov edx, dword [edi + 0x14]
push ebp
push ecx
push edx
call fcn.0041927a
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
add esp, 0xc
mov dl, byte [eax]
mov al, byte [ecx]
cmp dl, al
je 0x4199d4
mov eax, dword [ebx + 0x14]
mov ecx, esi
test dl, dl
jne 0x4199a9
mov eax, dword [edi + 0x14]
mov ecx, ebp
cmp ecx, 1
jle 0x4199d4
add ecx, ecx
lea edx, [eax + 2]
push ecx
add eax, 4
push edx
push eax
mov dword [esp + 0x9c], edx
call fcn.0045f55a
mov edx, dword [esp + 0x9c]
add esp, 0xc
mov word [edx], 0
mov ebx, dword [ebx + 0x14]
mov edx, dword [edi + 0x14]
or edi, 0xffffffff
mov cx, word [ebx]
cmp cx, word [edx]
je 0x419a15
test cx, cx
mov eax, ebx
jne 0x4199f0
mov eax, edx
mov esi, ebp
cmp word [eax + 2], di
lea edx, [eax + 2]
mov ecx, 1
je 0x419a07
add edx, 2
inc ecx
cmp word [edx], di
jne 0x4199fe
mov word [eax + ecx*2], si
mov word [eax + ecx*2 + 2], di
mov word [eax], 0
lea ecx, [esp + 0x68]
mov dword [esp + 0x88], edi
call fcn.00470dbe
mov eax, 1
jmp 0x4198e1