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

Disassembly:
sub esp, 0x44
push ebp
mov ebp, dword [esp + 0x4c]
mov eax, dword [ebp + 0x50]
push esi
push edi
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x14]
xor edi, edi
cmp eax, edi
mov esi, ecx
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], 0xffffffff
je 0x3018033f
cmp dword [eax + 0x14], edi
je 0x3018033f
mov ecx, dword [eax + 0x2c]
mov edx, dword [eax + 0x50]
mov eax, dword [esp + 0x10]
sub ecx, edx
add eax, ecx
mov dword [esp + 0x10], eax
mov edx, dword [ebp + 0x2c]
lea eax, [esp + 0xc]
push ebx
push eax
mov dword [esp + 0x14], edx
call fcn.3011d291
mov edx, dword [esi + 4]
mov ecx, dword [esp + 0x60]
mov ebx, eax
mov eax, dword [edx + 8]
mov dword [esp + 0x54], eax
mov eax, dword [ebp + 0x40]
imul eax, eax, 7
add esp, 4
mov dword [esp + 0x24], ecx
push eax
lea ecx, [esp + 0x48]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x4c], edi
mov dword [esp + 0x50], edi
mov dword [esp + 0x48], edi
call fcn.3017e220
mov cl, 1
mov eax, ebp
mov byte [esp + 0x58], cl
cmp dword [eax + 0x40], edi
jbe 0x301803a7
test cl, cl
je 0x301803a7
cmp dword [eax + 0x54], esi
je 0x301803a0
xor cl, cl
mov eax, dword [eax + 0x14]
cmp eax, edi
jne 0x30180390
cmp ebx, edi
mov byte [esp + 0x58], cl
mov dword [esp + 0x28], edi
jle 0x3018080b
lea ecx, [esp + 0x34]
call fcn.30175480
mov ecx, dword [esp + 0x60]
push ecx
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x18]
push eax
call fcn.3017fa80
mov edi, dword [esp + 0x38]
push 0
lea ecx, [esp + 0x38]
call fcn.30175490
mov ebx, eax
mov eax, dword [esp + 0x10]
movzx esi, byte [eax]
mov dword [esp + 0x5c], esi
and esi, 0xf
inc eax
cmp esi, 6
mov dword [esp + 0x10], eax
ja case.0x30180405.5
jmp dword [esi*4 + 0x30180d1c]
lea ecx, [esp + 0x10]
push ecx
call fcn.3011d291
mov ebx, eax
mov al, byte [esp + 0x5c]
add esp, 4
test al, al
je 0x30180427
test ebx, ebx
jne 0x30180434
mov eax, dword [esp + 0x24]
mov ebx, eax
inc eax
mov dword [esp + 0x24], eax
jmp 0x30180435
dec ebx
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x18]
push 0
push edx
lea eax, [esp + 0x18]
push eax
call fcn.3017fb10
lea ecx, [esp + 0x10]
push ecx
mov edi, eax
call fcn.3011d291
add esp, 4
xor esi, esi
test eax, eax
je 0x3018046b
mov ecx, dword [esp + 0x10]
movzx esi, byte [ecx]
inc ecx
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x18]
mov ecx, dword [edx + 4]
cmp edi, dword [ecx + 0x74]
jne 0x3018048e
mov edx, dword [esp + 0x14]
test dl, 7
je 0x30180487
mov dword [esp + 0x1c], edx
add edx, 4
mov ecx, edx
add edx, 8
jmp 0x301804aa
mov ecx, dword [esp + 0x1c]
cmp ecx, 0xffffffff
je 0x301804a1
mov dword [esp + 0x1c], 0xffffffff
jmp 0x301804ae
mov edx, dword [esp + 0x14]
mov ecx, edx
add edx, 4
mov dword [esp + 0x14], edx
lea edx, [esp + 0x44]
push edx
push esi
push ecx
mov ecx, dword [esp + 0x6c]
push edi
push ecx
push ebx
push eax
mov ecx, ebp
call fcn.3017ee70
test byte [esp + 0x5c], 0x40
je 0x301807e8
mov edx, dword [esp + 0x10]
push edx
push ebx
mov ecx, ebp
call fcn.3017e5d0
jmp 0x301807ba
lea eax, [esp + 0x10]
push eax
call fcn.3011d291
mov cl, byte [esp + 0x5c]
add esp, 4
test cl, cl
je 0x301804fa
test eax, eax
jne 0x30180509
mov eax, dword [esp + 0x24]
mov dword [esp + 0x20], eax
inc eax
mov dword [esp + 0x24], eax
jmp 0x3018050e
dec eax
mov dword [esp + 0x20], eax
lea ecx, [esp + 0x10]
push ecx
call fcn.3011d291
mov edi, dword [esp + 0x1c]
mov esi, eax
mov eax, dword [edi + 0xe4]
add esp, 4
cmp esi, eax
jb 0x3018054b
mov ecx, dword [edi + 4]
push eax
call fcn.3015fc10
mov ecx, dword [edi + 4]
push esi
call fcn.3015fc10
mov ecx, dword [esp + 0x60]
push 0x424
call fcn.3015cd50
mov edx, dword [edi + 0x9c]
mov ebx, dword [edx + esi*4]
test ebx, ebx
jne 0x3018056f
mov ecx, dword [edi + 4]
push esi
call fcn.3015fc10
mov ecx, dword [esp + 0x60]
push 0x423
call fcn.3015cd50
mov eax, dword [esp + 0x1c]
cmp eax, 0xffffffff
je 0x30180582
mov dword [esp + 0x1c], 0xffffffff
jmp 0x3018058f
mov ecx, dword [esp + 0x14]
mov eax, ecx
add ecx, 4
mov dword [esp + 0x14], ecx
mov edx, dword [ebx]
lea ecx, [esp + 0x44]
push ecx
mov ecx, dword [esp + 0x24]
push 0
push eax
mov eax, dword [esp + 0x6c]
push edx
push eax
push ecx
push 0
mov ecx, ebp
call fcn.3017ee70
jmp 0x301807ba
lea edx, [esp + 0x10]
push edx
call fcn.3011d291
lea eax, [esp + 0x14]
push eax
call fcn.3011d291
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx + 0x78]
mov eax, dword [edx + eax*4]
add esp, 8
push ebx
push edi
lea ecx, [ebp + 4]
mov dword [esp + 0x28], eax
call fcn.3017a7b0
mov esi, eax
mov eax, dword [ebp + 0x30]
shr esi, 3
test eax, eax
je 0x30180656
mov ecx, dword [ebp + 0x40]
shl ecx, 2
lea eax, [eax + ecx*2]
test eax, eax
je 0x30180656
cmp dword [eax + esi*4], 0
je 0x30180656
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x5c]
push ecx
push edx
push edi
push ebx
mov ecx, ebp
call fcn.3017fbe0
test eax, eax
jne 0x30180656
mov ecx, dword [ebp + 0x30]
test ecx, ecx
je 0x30180630
mov eax, dword [ebp + 0x40]
shl eax, 2
lea eax, [ecx + eax*2]
test eax, eax
je 0x30180630
mov edi, dword [eax + esi*4]
jmp 0x30180632
xor edi, edi
mov ebx, dword [esp + 0x18]
mov ecx, dword [ebx + 4]
push esi
call fcn.3015fc10
mov ecx, dword [ebx + 4]
push edi
call fcn.3015fc10
mov ecx, dword [esp + 0x60]
push 0x431
call fcn.3015cd50
mov ecx, dword [ebp + 0x30]
test ecx, ecx
je 0x30180668
mov eax, dword [ebp + 0x40]
shl eax, 2
lea eax, [ecx + eax*2]
jmp 0x3018066a
xor eax, eax
mov edx, dword [esp + 0x20]
push edx
lea eax, [eax + esi*4]
push eax
push ecx
mov ecx, dword [ebp + 0x10]
mov ecx, dword [ecx + 8]
call fcn.300fcf1d
test byte [esp + 0x5c], 0x40
je 0x301807e8
mov edx, dword [esp + 0x10]
mov eax, dword [ebp + 0x40]
push edx
add eax, esi
push eax
mov ecx, ebp
call fcn.3017e5d0
jmp 0x301807ba
lea ecx, [esp + 0x10]
push ecx
call fcn.3011d291
lea edx, [esp + 0x14]
push edx
call fcn.3011d291
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx + 0x78]
mov eax, dword [edx + eax*4]
add esp, 8
push ebx
push edi
lea ecx, [ebp + 4]
mov dword [esp + 0x34], eax
call fcn.3017a7b0
shr eax, 3
cmp esi, 2
je 0x301806d9
inc eax
mov ecx, dword [ebp + 0x30]
test ecx, ecx
mov dword [esp + 0x20], eax
je 0x30180773
mov eax, dword [ebp + 0x40]
shl eax, 2
lea eax, [ecx + eax*2]
test eax, eax
je 0x30180773
mov ecx, dword [esp + 0x20]
cmp dword [eax + ecx*4], 0
je 0x30180773
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x5c]
push edx
push eax
push edi
push ebx
mov ecx, ebp
call fcn.3017fbe0
cmp esi, 2
jne 0x30180720
and eax, 5
cmp al, 5
jne 0x3018072c
jmp 0x30180773
cmp esi, 3
jne 0x30180773
and eax, 6
cmp al, 6
je 0x30180773
mov ecx, dword [ebp + 0x30]
test ecx, ecx
je 0x30180749
mov eax, dword [ebp + 0x40]
shl eax, 2
lea eax, [ecx + eax*2]
test eax, eax
je 0x30180749
mov ecx, dword [esp + 0x20]
mov esi, dword [eax + ecx*4]
jmp 0x3018074b
xor esi, esi
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
mov ecx, dword [edi + 4]
push edx
call fcn.3015fc10
mov ecx, dword [edi + 4]
push esi
call fcn.3015fc10
mov ecx, dword [esp + 0x60]
push 0x431
call fcn.3015cd50
mov ecx, dword [ebp + 0x30]
test ecx, ecx
je 0x30180790
mov eax, dword [ebp + 0x40]
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x20]
shl eax, 2
lea eax, [ecx + eax*2]
jmp 0x3018066e
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x20]
xor eax, eax
jmp 0x3018066e
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx + 4]
push esi
call fcn.3015fc10
mov ecx, dword [esp + 0x60]
push 0x415
call fcn.3015cd50
test byte [esp + 0x5c], 0x40
je 0x301807e8
lea edx, [esp + 0x10]
push edx
call fcn.3011d291
xor edi, edi
add esp, 4
cmp eax, edi
jle 0x301807ea
mov esi, eax
lea eax, [esp + 0x10]
push eax
call fcn.3011d291
add esp, 4
dec esi
jne 0x301807d6
jmp 0x301807ea
xor edi, edi
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x30]
inc eax
cmp eax, ecx
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x28], eax
jl 0x301803b7
mov eax, dword [ebp + 0x30]
xor esi, esi
cmp eax, esi
je 0x30180820
mov ecx, dword [ebp + 0x40]
lea edx, [eax + ecx*4]
mov dword [esp + 0x58], edx
jmp 0x30180824
mov dword [esp + 0x58], esi
mov eax, dword [ebp + 0x40]
cmp eax, esi
mov dword [esp + 0x5c], eax
jbe 0x30180881
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x14]
jmp 0x30180840
mov ecx, dword [esp + 0x58]
cmp dword [ecx + esi*4], 0
jne 0x30180878
cmp edi, 0xffffffff
je 0x30180856
mov eax, edi
or edi, 0xffffffff
jmp 0x3018085b
mov eax, ebx
add ebx, 4
lea edx, [esp + 0x44]
push edx
push 0
push eax
mov eax, dword [esp + 0x6c]
push 0
push eax
push esi
push 0
mov ecx, ebp
call fcn.3017ee70
mov eax, dword [esp + 0x5c]
inc esi
cmp esi, eax
jb 0x30180840
mov dword [esp + 0x14], ebx
mov ecx, dword [esp + 0x48]
test ecx, ecx
jbe 0x30180cab
mov esi, dword [esp + 0x18]
mov edx, dword [esi + 4]
mov eax, dword [edx + 8]
add ecx, 0x10
xor edx, edx
push ecx
lea ecx, [esp + 0x38]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x38], edx
mov dword [esp + 0x44], eax
call fcn.3017e220
mov ebx, dword [ebp + 0x28]
test ebx, ebx
lea edi, [ebp + 0x28]
je 0x30180a1b
mov eax, dword [ebx + 0x34]
test eax, eax
mov dword [esp + 0x58], eax
jne 0x301808dd
mov ecx, dword [esp + 0x60]
push 0x453
call fcn.3015cd50
lea eax, [esp + 0x58]
push eax
call fcn.3011d291
add esp, 4
cmp eax, 1
jg 0x301808f4
mov eax, 2
push eax
lea ecx, [esp + 0x38]
call fcn.301a22f0
lea ecx, [esp + 0x58]
push ecx
call fcn.3011d291
add esp, 4
push eax
lea ecx, [esp + 0x38]
call fcn.301a22f0
lea edx, [esp + 0x58]
push edx
call fcn.3011d291
add esp, 4
push eax
lea ecx, [esp + 0x38]
call fcn.301a22f0
lea eax, [esp + 0x58]
push eax
call fcn.3011d291
add esp, 4
push eax
lea ecx, [esp + 0x38]
call fcn.301a22f0
lea ecx, [esp + 0x58]
push ecx
call fcn.3011d291
mov esi, dword [esp + 0x5c]
mov edi, eax
mov al, byte [esi]
add esp, 4
cmp al, 0x49
jne 0x301809bf
mov eax, dword [esp + 0x4c]
cmp dword [esp + 0x48], eax
jb 0x30180989
test eax, eax
jne 0x30180971
mov eax, 0x80
jmp 0x3018097f
cmp eax, 0xf
jbe 0x3018097d
lea eax, [eax + eax*2]
shr eax, 1
jmp 0x3018097f
add eax, eax
push eax
lea ecx, [esp + 0x48]
call fcn.3017e220
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
push edx
push 1
push eax
push 0
push eax
lea ecx, [esp + 0x58]
call fcn.3017f400
mov eax, dword [esp + 0x44]
mov byte [eax], 0x49
mov eax, dword [esp + 0x48]
cmp eax, 1
jae 0x301809b6
mov eax, 1
inc eax
inc esi
mov dword [esp + 0x48], eax
dec edi
jmp 0x301809c3
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
cmp eax, ecx
jb 0x301809f3
test ecx, ecx
jne 0x301809d6
mov eax, 0x80
jmp 0x301809e5
cmp ecx, 0xf
jbe 0x301809e2
lea eax, [ecx + ecx*2]
shr eax, 1
jmp 0x301809e5
lea eax, [ecx + ecx]
push eax
lea ecx, [esp + 0x48]
call fcn.3017e220
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
mov ecx, eax
inc eax
mov dword [esp + 0x48], eax
mov byte [ecx + edx], 0xee
push esi
lea ecx, [esp + 0x48]
call fcn.301a22f0
push edi
lea ecx, [esp + 0x48]
call fcn.301a22f0
jmp 0x30180b19
mov eax, dword [esi + 4]
mov ecx, dword [eax + 8]
push 4
push 3
push 0x3c
call fcn.301ac6b0
test eax, eax
je 0x30180a3b
mov ecx, eax
call fcn.301a2520
mov ebx, eax
jmp 0x30180a3d
xor ebx, ebx
push ebp
push ebx
call fcn.301ae550
lea eax, [ebx + 8]
push esi
push eax
call fcn.301ae550
add esp, 0x10
push 1
mov ecx, ebx
mov dword [ebx + 0xc], 0
mov dword [ebx + 0x14], 4
call fcn.30190d80
push ebp
push 0
mov ecx, ebx
call fcn.30190eb0
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0x90]
mov edx, dword [ebx + 0x28]
cmp edx, eax
lea ecx, [ebx + 0x28]
jne 0x30180a8d
test eax, eax
jne 0x30180a8d
mov dword [ecx], eax
jmp 0x30180a97
push eax
push ecx
call fcn.301ae550
add esp, 8
push ebx
push edi
call fcn.301ae550
mov ecx, dword [ebx + 0x18]
or ecx, 0x20000000
add esp, 8
mov dword [ebx + 0x18], ecx
push 2
lea ecx, [esp + 0x38]
call fcn.301a22f0
push 1
lea ecx, [esp + 0x38]
call fcn.301a22f0
push 1
lea ecx, [esp + 0x38]
call fcn.301a22f0
push 1
lea ecx, [esp + 0x38]
call fcn.301a22f0
mov eax, dword [esp + 0x4c]
cmp dword [esp + 0x48], eax
jb 0x30180b06
test eax, eax
jne 0x30180aee
mov eax, 0x80
jmp 0x30180afc
cmp eax, 0xf
jbe 0x30180afa
lea eax, [eax + eax*2]
shr eax, 1
jmp 0x30180afc
add eax, eax
push eax
lea ecx, [esp + 0x48]
call fcn.3017e220
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
mov eax, ecx
inc ecx
mov dword [esp + 0x48], ecx
mov byte [eax + edx], 0x47
mov eax, dword [esp + 0x48]
push eax
lea ecx, [esp + 0x38]
call fcn.301a22f0
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x38]
add edx, ecx
push edx
lea ecx, [esp + 0x38]
call fcn.3017e220
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x34]
cmp eax, edx
mov ecx, dword [esp + 0x48]
mov edi, ecx
mov esi, eax
jne 0x30180b70
mov eax, dword [esp + 0x38]
test eax, eax
jge 0x30180b70
xor eax, eax
test ecx, ecx
jle 0x30180b8f
mov ecx, dword [esp + 0x38]
add ecx, edx
mov dl, byte [eax + esi]
mov byte [ecx + eax], dl
inc eax
cmp eax, edi
jl 0x30180b63
jmp 0x30180b8b
lea eax, [ecx - 1]
test eax, eax
jl 0x30180b8f
mov ecx, dword [esp + 0x38]
lea edi, [ecx + edx]
mov edi, edi
dec eax
mov dl, byte [eax + esi + 1]
mov byte [edi + eax + 1], dl
jns 0x30180b80
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x38]
add edx, ecx
push 0
lea ecx, [esp + 0x38]
mov dword [esp + 0x3c], edx
call fcn.301a22f0
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 4]
mov edx, dword [esp + 0x38]
mov ecx, dword [ecx + 8]
push 3
push 0
push edx
call fcn.301ac6b0
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
mov edx, ecx
shr ecx, 2
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 4]
mov edi, dword [edx + 8]
mov esi, eax
mov dword [esp + 0x5c], eax
mov al, byte [edi + 0x119]
and esi, 0xfffffff8
test al, al
mov dword [esp + 0x58], edi
je 0x30180c7a
test esi, esi
je 0x30180c7a
mov eax, ebx
and eax, 0xfff
cmp eax, 0x10
jne 0x30180c1b
mov ecx, ebx
and ecx, 0xfffff000
xor eax, eax
mov al, byte [ecx + 0xc]
and eax, 1
jmp 0x30180c61
mov edx, ebx
and edx, 0xfffff000
mov ecx, dword [edx + 0xc]
mov edi, dword [edx + 0x2c]
mov eax, ebx
sub eax, edi
movzx edi, word [ecx + 0x30]
mov cl, byte [ecx + 0x32]
imul eax, edi
mov edx, dword [edx + 0x24]
sar eax, cl
mov ecx, eax
mov edi, eax
and ecx, 7
shl ecx, 2
mov eax, 1
shl eax, cl
sar edi, 3
mov dword [esp + 0x60], eax
mov eax, dword [edx + edi*4]
mov edx, dword [esp + 0x60]
mov edi, dword [esp + 0x58]
and eax, edx
test eax, eax
je 0x30180c7a
push esi
mov ecx, edi
call fcn.301ad690
test eax, eax
je 0x30180c7a
push esi
push ebx
mov ecx, edi
call fcn.301ae080
mov eax, dword [esp + 0x5c]
push eax
add ebx, 0x34
push ebx
mov ecx, edi
call fcn.301acac0
mov ecx, dword [esp + 0x40]
test ecx, ecx
je 0x30180c9e
mov edx, dword [esp + 0x34]
push edx
call fcn.301ada00
jmp 0x30180cab
mov eax, dword [esp + 0x34]
push eax
call fcn.300367ec
add esp, 4
mov ecx, dword [ebp + 0x14]
test ecx, ecx
pop ebx
je 0x30180cd1
mov eax, dword [ecx + 0x14]
test eax, eax
je 0x30180cd1
mov eax, dword [ecx + 0x4c]
cmp eax, 0xffffffff
je 0x30180cd1
mov edx, dword [ecx + 0x50]
mov ecx, dword [ebp + 0x50]
sub eax, edx
add eax, ecx
mov dword [ebp + 0x4c], eax
jmp 0x30180ce5
test byte [ebp + 0x20], 1
je 0x30180ce5
mov eax, dword [esp + 0x10]
mov dword [ebp + 0x4c], eax
add eax, 0x10
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
mov dword [ebp + 0x2c], ecx
mov ecx, dword [esp + 0x4c]
test ecx, ecx
pop edi
pop esi
pop ebp
je 0x30180d07
mov edx, dword [esp + 0x34]
push edx
call fcn.301ada00
add esp, 0x44
ret 0xc
mov eax, dword [esp + 0x34]
push eax
call fcn.300367ec
add esp, 4
add esp, 0x44
ret 0xc