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

Disassembly:
sub esp, 0x5c
push ebx
mov ebx, dword [esp + 0x64]
push ebp
xor ebp, ebp
cmp bx, 0x400
push esi
push edi
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x54], ebp
mov esi, ebx
jne 0x3004ec97
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
jmp 0x3004eca4
cmp bx, 0x800
jne 0x3004eca6
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLCID]
mov esi, eax
cmp esi, dword [0x30062bb4]
jne 0x3004eced
cmp dword [0x300b8964], ebp
je 0x3004ece6
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x7c]
push eax
mov eax, dword [esp + 0x7c]
push ecx
mov ecx, dword [esp + 0x7c]
push edx
push eax
push ecx
push ebx
call dword [sym.imp.KERNEL32.dll_CompareStringW]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret 0x18
mov esi, 1
jmp 0x3004ed63
xor eax, eax
push 0x300a08ec
mov ecx, 0xd
mov edi, 0x300a08ec
push esi
rep stosd dword es:[edi], eax
call fcn.3004c080
call fcn.3004c132
push esi
mov dword [0x30062bb4], esi
call fcn.3004c17f
add esp, 0xc
test eax, eax
jne 0x3004ed58
mov edx, dword [esp + 0x84]
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x7c]
push edx
mov edx, dword [esp + 0x7c]
push eax
mov eax, dword [esp + 0x7c]
push ecx
push edx
push eax
push ebx
mov dword [0x300b8964], 1
call dword [sym.imp.KERNEL32.dll_CompareStringW]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret 0x18
mov dword [0x300b8964], ebp
mov esi, 4
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x84]
mov ecx, dword [esp + 0x7c]
and eax, 0xbfffffff
cmp dword [0x300a0908], ebp
mov dword [esp + 0x68], esi
jne 0x3004f7e4
cmp ecx, 0xffffffff
jg 0x3004f7e4
cmp edx, 0xffffffff
jg 0x3004f7ee
cmp eax, 1
ja 0x3004f7e4
test ebx, 0xfff00000
jne 0x3004f7d0
mov ebp, dword [esp + 0x78]
mov edx, dword [esp + 0x80]
xor esi, esi
cmp ebp, esi
mov dword [esp + 0x70], ebp
mov dword [esp + 0x84], edx
je 0x3004f7d0
cmp edx, esi
je 0x3004f7d0
mov cx, word [ebp]
cmp cx, word [edx]
jne 0x3004ee9e
cmp cx, si
je 0x3004ee93
mov cx, word [ebp + 2]
add ebp, 2
add edx, 2
cmp cx, word [edx]
jne 0x3004ee93
cmp cx, si
je 0x3004ee93
mov cx, word [ebp + 2]
add ebp, 2
add edx, 2
cmp cx, word [edx]
jne 0x3004ee93
cmp cx, si
je 0x3004ee93
mov cx, word [ebp + 2]
add ebp, 2
add edx, 2
cmp cx, word [edx]
jne 0x3004ee93
cmp cx, si
je 0x3004ee93
mov cx, word [ebp + 2]
add ebp, 2
add edx, 2
cmp cx, word [edx]
jne 0x3004ee93
cmp cx, si
je 0x3004ee93
mov cx, word [ebp + 2]
add ebp, 2
add edx, 2
cmp cx, word [edx]
jne 0x3004ee93
cmp cx, si
je 0x3004ee93
mov cx, word [ebp + 2]
add ebp, 2
add edx, 2
cmp cx, word [edx]
jne 0x3004ee93
cmp cx, si
je 0x3004ee93
mov cx, word [ebp + 2]
add ebp, 2
add edx, 2
cmp cx, word [edx]
jne 0x3004ee93
cmp cx, si
je 0x3004ee93
mov cx, word [ebp + 2]
add ebp, 2
add edx, 2
cmp cx, word [edx]
je 0x3004ede3
mov dword [esp + 0x84], edx
mov dword [esp + 0x70], ebp
mov cx, word [ebp]
cmp cx, word [edx]
je 0x3004f77e
neg eax
sbb eax, eax
and eax, 0xe8000000
add eax, 0xffffffff
mov edi, eax
xor eax, eax
cmp dword [0x300a0904], esi
mov dword [esp + 0x40], esi
setne al
mov dword [esp + 0x38], esi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x28], esi
mov dword [esp + 0x34], esi
mov dword [esp + 0x50], esi
mov dword [esp + 0x58], esi
add eax, 1
or al, 4
mov dword [esp + 0x14], esi
mov dword [esp + 0x7c], esi
mov dword [esp + 0x48], edi
mov dword [esp + 0x20], eax
mov ax, cx
cmp ax, si
je 0x3004f715
jmp 0x3004ef07
mov edi, dword [esp + 0x48]
mov si, word [edx]
test si, si
je 0x3004f70e
lea edx, [esp + 0x1c]
push edx
push eax
call fcn.3004cdcf
lea eax, [esp + 0x20]
push eax
push esi
call fcn.3004cdcf
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
and eax, edi
and ecx, edi
add esp, 0x10
cmp eax, ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], ecx
je 0x3004f6a7
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
cmp cx, dx
mov al, byte [esp + 0x1d]
mov byte [esp + 0x74], al
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], edx
jne 0x3004ef6d
cmp al, 3
jne 0x3004f5d4
xor ecx, ecx
test al, al
mov dword [esp + 0x3c], ecx
mov edx, 1
jne 0x3004ef89
add ebp, 2
mov ecx, edx
mov dword [esp + 0x70], ebp
mov dword [esp + 0x3c], ecx
mov ebx, dword [esp + 0x18]
shr ebx, 8
test bl, bl
jne 0x3004efaa
mov edx, dword [esp + 0x84]
add edx, 2
mov dword [esp + 0x84], edx
jmp 0x3004f6ee
test ecx, ecx
jne 0x3004f6e7
movzx eax, al
add eax, 0xffffffff
cmp eax, 5
ja case.0x3004efc1.3
jmp dword [eax*4 + 0x3004f828]
cmp dword [esp + 0x38], 0
je 0x3004efd6
test byte [esp + 0x20], 2
je 0x3004efe3
and dword [esp + 0x20], 0xfffffffe
mov dword [esp + 0x38], 3
add ebp, 2
mov dword [esp + 0x70], ebp
mov dword [esp + 0x3c], edx
jmp case.0x3004efc1.3
cmp dword [esp + 0x40], 0
je 0x3004f00a
add ebp, 2
mov dword [esp + 0x70], ebp
mov dword [esp + 0x3c], edx
jmp case.0x3004efc1.3
cmp byte [esp + 0x19], 6
je case.0x3004efc1.3
cmp dword [esp + 0x34], 0
je 0x3004f038
add ebp, 2
mov dword [esp + 0x34], 3
mov dword [esp + 0x40], edx
mov dword [esp + 0x70], ebp
mov dword [esp + 0x3c], edx
jmp case.0x3004efc1.3
add ebp, 2
mov dword [esp + 0x28], 3
mov dword [esp + 0x70], ebp
mov dword [esp + 0x3c], edx
jmp case.0x3004efc1.3
movzx eax, byte [esp + 0x1c]
mov ecx, dword [0x30062418]
mov ecx, dword [ecx + 0x28]
lea eax, [ecx + eax*4]
mov cx, word [eax]
mov ax, word [eax + 2]
mov dword [esp + 0x50], ebp
lea ebp, [esp + 0x60]
mov dword [esp + 0x70], ebp
mov word [esp + 0x60], cx
mov word [esp + 0x62], ax
mov dword [esp + 0x4c], 2
mov dword [esp + 0x3c], edx
jmp case.0x3004efc1.3
mov bl, byte [esp + 0x1f]
mov al, byte [esp + 0x1c]
and bl, 0x3f
cmp al, 1
mov ecx, 0xffff0000
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], ecx
ja 0x3004f179
lea edx, [ebp - 2]
cmp edx, dword [esp + 0x78]
jb 0x3004f1a0
mov edi, 2
lea esi, [ebp - 2]
mov cx, word [esi]
lea eax, [esp + 0x10]
push eax
push ecx
call fcn.3004cdcf
mov ecx, dword [esp + 0x18]
and ecx, dword [esp + 0x50]
add esp, 8
mov dword [esp + 0x10], ecx
mov al, byte [esp + 0x11]
cmp al, 3
jae 0x3004f0fc
cmp al, 2
mov ecx, 0xffff0000
je 0x3004f1a0
jmp 0x3004f10b
jne 0x3004f173
mov al, byte [esp + 0x10]
cmp al, 1
ja 0x3004f121
mov ecx, 0xffff0000
add edi, 2
mov edx, ebp
sub edx, edi
sub esi, 2
cmp edx, dword [esp + 0x78]
mov dword [esp + 0x10], ecx
jae 0x3004f0c8
jmp 0x3004f1a0
movzx ax, al
or ah, 0x22
mov word [esp + 0x10], ax
mov al, byte [esp + 0x13]
and al, 0x3f
mov cl, al
and cl, 0xc6
mov byte [esp + 0x14], cl
mov cl, al
and cl, 0xe4
cmp byte [esp + 0x1c], 0
mov byte [esp + 0x16], cl
mov ecx, dword [esp + 0x10]
jne 0x3004f161
and al, 0xc5
mov dword [esp + 0x2c], ecx
mov byte [esp + 0x15], 4
mov byte [esp + 0x17], al
jmp 0x3004f1a7
mov eax, ecx
and eax, 0xff87
mov dword [esp + 0x2c], eax
mov byte [esp + 0x15], 5
jmp 0x3004f199
mov dword [esp + 0x2c], ecx
jmp 0x3004f1a0
movzx ax, al
or ah, 0x22
mov byte [esp + 0x15], 3
mov dword [esp + 0x2c], eax
mov al, bl
and al, 0xc6
mov byte [esp + 0x14], al
mov al, bl
and al, 0xe4
mov byte [esp + 0x16], al
and bl, 0xc5
mov byte [esp + 0x17], bl
cmp byte [esp + 0x1c], 1
ja 0x3004f1c5
cmp ecx, 0xffff0000
jne 0x3004f1c5
mov dword [esp + 0x2c], 0xffff
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], 0
jmp 0x3004f1de
mov eax, dword [esp + 0x1c]
movzx ecx, word [esp + 0x2c]
and eax, 0xffff0000
or eax, ecx
mov dword [esp + 0x1c], eax
mov byte [esp + 0x1f], 2
cmp byte [esp + 0x19], 3
je 0x3004f239
cmp byte [esp + 0x7c], 0
jne 0x3004f1f8
cmp byte [esp + 0x14], 0
je 0x3004f1f8
mov byte [esp + 0x7c], 3
cmp byte [esp + 0x7d], 0
jne 0x3004f20f
mov eax, dword [esp + 0x14]
shr eax, 8
test al, al
je 0x3004f20f
mov byte [esp + 0x7d], 3
cmp byte [esp + 0x7e], 0
jne 0x3004f226
mov eax, dword [esp + 0x14]
shr eax, 0x10
test al, al
je 0x3004f226
mov byte [esp + 0x7e], 3
cmp byte [esp + 0x7f], 0
jne 0x3004f239
cmp byte [esp + 0x17], 0
je 0x3004f239
mov byte [esp + 0x7f], 3
mov edx, 1
movzx eax, byte [esp + 0x19]
add eax, 0xffffffff
cmp eax, 5
ja case.0x3004f24f.3
jmp dword [eax*4 + 0x3004f840]
cmp dword [esp + 0x38], 0
je 0x3004f264
test byte [esp + 0x20], 2
je 0x3004f26d
and dword [esp + 0x20], 0xfffffffe
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x84]
add edx, 2
mov dword [esp + 0x84], edx
jmp 0x3004f6ee
cmp dword [esp + 0x40], 0
jne 0x3004f310
cmp byte [esp + 0x74], 6
je 0x3004f2d4
cmp dword [esp + 0x28], 0
je 0x3004f2ba
mov dword [esp + 0x28], edx
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x84]
add edx, 2
mov dword [esp + 0x84], edx
jmp 0x3004f6ee
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x84]
add edx, 2
mov dword [esp + 0x84], edx
jmp 0x3004f6ee
cmp dword [esp + 0x28], 0
je 0x3004f2e1
mov dword [esp + 0x28], edx
jmp 0x3004f305
cmp dword [esp + 0x34], 0
je 0x3004f2f2
mov dword [esp + 0x34], 3
jmp 0x3004f305
mov al, byte [esp + 0x1c]
cmp al, byte [esp + 0x18]
sbb eax, eax
and al, 0xfe
add eax, 3
mov dword [esp + 0x28], eax
add ebp, 2
mov dword [esp + 0x70], ebp
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x84]
add edx, 2
mov dword [esp + 0x84], edx
jmp 0x3004f6ee
mov ecx, dword [esp + 0x84]
movzx eax, byte [esp + 0x18]
mov dword [esp + 0x58], ecx
mov ecx, dword [0x30062418]
mov ecx, dword [ecx + 0x28]
lea eax, [ecx + eax*4]
mov cx, word [eax]
mov ax, word [eax + 2]
lea edx, [esp + 0x64]
mov dword [esp + 0x84], edx
mov word [esp + 0x64], cx
mov word [esp + 0x66], ax
mov dword [esp + 0x54], 2
jmp 0x3004f6ee
mov bl, byte [esp + 0x1b]
mov al, byte [esp + 0x18]
and bl, 0x3f
cmp al, 1
mov esi, 0xffff0000
mov dword [esp + 0x10], 0
mov dword [esp + 0x24], esi
ja 0x3004f4c3
mov ecx, dword [esp + 0x84]
add ecx, 0xfffffffe
cmp ecx, dword [esp + 0x80]
jb 0x3004f3e5
mov edi, dword [esp + 0x84]
mov ebp, 2
add edi, 0xfffffffe
lea ecx, [ecx]
mov ax, word [edi]
lea edx, [esp + 0x24]
push edx
push eax
call fcn.3004cdcf
mov esi, dword [esp + 0x2c]
and esi, dword [esp + 0x50]
add esp, 8
mov dword [esp + 0x24], esi
mov al, byte [esp + 0x25]
cmp al, 3
jae 0x3004f42d
cmp al, 2
mov esi, 0xffff0000
jne 0x3004f440
mov ebp, dword [esp + 0x70]
mov bl, byte [esp + 0x13]
mov dl, byte [esp + 0x12]
mov cl, byte [esp + 0x10]
cmp byte [esp + 0x18], 1
ja 0x3004f4e5
cmp esi, 0xffff0000
jne 0x3004f4e5
mov dword [esp + 0x10], 0
mov bl, byte [esp + 0x13]
mov dl, byte [esp + 0x12]
mov cl, byte [esp + 0x10]
mov dword [esp + 0x30], 0xffff
mov dword [esp + 0x18], esi
jmp 0x3004f4fe
jne 0x3004f4ba
mov al, byte [esp + 0x24]
cmp al, 1
ja 0x3004f465
mov esi, 0xffff0000
mov ecx, dword [esp + 0x84]
add ebp, 2
sub ecx, ebp
sub edi, 2
cmp ecx, dword [esp + 0x80]
mov dword [esp + 0x24], esi
jae 0x3004f3b3
jmp 0x3004f3e1
mov ebp, dword [esp + 0x70]
movzx dx, al
mov al, byte [esp + 0x27]
or dh, 0x22
and al, 0x3f
mov cl, al
and cl, 0xc6
mov word [esp + 0x24], dx
mov esi, dword [esp + 0x24]
mov dl, al
and dl, 0xe4
cmp byte [esp + 0x18], 0
jne 0x3004f4a2
and al, 0xc5
mov dword [esp + 0x30], esi
mov byte [esp + 0x11], 4
mov bl, al
jmp 0x3004f3fc
mov eax, esi
and eax, 0xff87
mov dword [esp + 0x30], eax
mov byte [esp + 0x11], 5
and bl, 0xc5
jmp 0x3004f3f1
mov dword [esp + 0x30], esi
jmp 0x3004f3e1
movzx ax, al
or ah, 0x22
mov cl, bl
mov dl, bl
and cl, 0xc6
and dl, 0xe4
mov byte [esp + 0x11], 3
and bl, 0xc5
mov dword [esp + 0x30], eax
jmp 0x3004f3f1
mov eax, dword [esp + 0x18]
movzx esi, word [esp + 0x30]
and eax, 0xffff0000
or eax, esi
mov dword [esp + 0x18], eax
mov byte [esp + 0x1b], 2
cmp byte [esp + 0x74], 3
je 0x3004f54e
cmp byte [esp + 0x7c], 0
jne 0x3004f515
test cl, cl
je 0x3004f515
mov byte [esp + 0x7c], 1
cmp byte [esp + 0x7d], 0
jne 0x3004f52c
mov eax, dword [esp + 0x10]
shr eax, 8
test al, al
je 0x3004f52c
mov byte [esp + 0x7d], 1
cmp byte [esp + 0x7e], 0
jne 0x3004f53c
test dl, dl
je 0x3004f53c
mov byte [esp + 0x7e], 1
cmp byte [esp + 0x7f], 0
jne case.0x3004f24f.3
test bl, bl
je case.0x3004f24f.3
mov byte [esp + 0x7f], 1
jmp case.0x3004f24f.3
cmp byte [esp + 0x7c], 0
jne 0x3004f568
mov al, byte [esp + 0x14]
cmp al, cl
je 0x3004f568
setae cl
lea ecx, [ecx + ecx + 1]
mov byte [esp + 0x7c], cl
cmp byte [esp + 0x7d], 0
jne 0x3004f586
mov cl, byte [esp + 0x15]
mov al, byte [esp + 0x11]
cmp cl, al
je 0x3004f586
setae cl
lea ecx, [ecx + ecx + 1]
mov byte [esp + 0x7d], cl
cmp byte [esp + 0x7e], 0
jne 0x3004f5a0
mov cl, byte [esp + 0x16]
cmp cl, dl
je 0x3004f5a0
setae cl
lea ecx, [ecx + ecx + 1]
mov byte [esp + 0x7e], cl
cmp byte [esp + 0x7f], 0
jne case.0x3004f24f.3
cmp byte [esp + 0x17], bl
je case.0x3004f24f.3
setae al
lea eax, [eax + eax + 1]
mov byte [esp + 0x7f], al
cmp dword [esp + 0x3c], 0
jne 0x3004f6e7
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
cmp cx, ax
jne 0x3004f6fd
test byte [esp + 0x20], 3
je 0x3004f67f
mov al, byte [esp + 0x1e]
mov bl, byte [esp + 0x1a]
cmp al, bl
mov byte [esp + 0x74], al
je 0x3004f67f
mov ax, word [ebp + 2]
test ax, ax
je 0x3004f628
lea esp, [esp]
lea ecx, [esp + 0x44]
push ecx
push eax
call fcn.3004cdcf
add esp, 8
cmp byte [esp + 0x45], 1
jne 0x3004f628
mov dl, byte [esp + 0x46]
mov ax, word [ebp + 4]
add byte [esp + 0x74], dl
add ebp, 2
test ax, ax
jne 0x3004f5ff
mov esi, dword [esp + 0x84]
mov ax, word [esi + 2]
test ax, ax
je 0x3004f667
lea esp, [esp]
lea ecx, [esp + 0x44]
push ecx
push eax
call fcn.3004cdcf
add esp, 8
cmp byte [esp + 0x45], 1
jne 0x3004f660
mov ax, word [esi + 4]
add bl, byte [esp + 0x46]
add esi, 2
test ax, ax
jne 0x3004f63b
mov dword [esp + 0x84], esi
mov al, byte [esp + 0x74]
cmp al, bl
je 0x3004f67f
sbb eax, eax
and al, 0xfe
add eax, 3
and dword [esp + 0x20], 0xfffffffe
mov dword [esp + 0x38], eax
test byte [esp + 0x20], 4
je 0x3004f6a7
mov al, byte [esp + 0x1b]
mov cl, byte [esp + 0x1f]
and al, 0x3f
and cl, 0x3f
cmp cl, al
je 0x3004f6a7
sbb eax, eax
and al, 0xfe
add eax, 3
and dword [esp + 0x20], 0xfffffffb
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x50]
xor ecx, ecx
cmp eax, ecx
je 0x3004f6be
sub dword [esp + 0x4c], 1
jne 0x3004f6be
mov ebp, eax
mov dword [esp + 0x50], ecx
mov eax, dword [esp + 0x58]
cmp eax, ecx
je 0x3004f6d8
sub dword [esp + 0x54], 1
jne 0x3004f6d8
mov dword [esp + 0x84], eax
mov dword [esp + 0x58], ecx
add ebp, 2
add dword [esp + 0x84], 2
mov dword [esp + 0x70], ebp
mov edx, dword [esp + 0x84]
mov ax, word [ebp]
test ax, ax
jne 0x3004ef03
jmp 0x3004f715
sbb eax, eax
and al, 0xfe
pop edi
pop esi
pop ebp
pop ebx
add eax, 3
add esp, 0x5c
ret 0x18
cmp word [ebp], 0
jne 0x3004f78f
cmp word [edx], 0
jne 0x3004f78d
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x3004f819
mov eax, dword [esp + 0x5c]
test eax, eax
jne 0x3004f819
cmp dword [esp + 0x7c], eax
je 0x3004f766
mov al, byte [esp + 0x7c]
test al, al
jne 0x3004f759
mov al, byte [esp + 0x7d]
test al, al
jne 0x3004f759
mov al, byte [esp + 0x7e]
test al, al
jne 0x3004f759
mov al, byte [esp + 0x7f]
test al, al
je 0x3004f766
pop edi
pop esi
pop ebp
movzx eax, al
pop ebx
add esp, 0x5c
ret 0x18
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x3004f819
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x3004f819
pop edi
pop esi
pop ebp
mov eax, 2
pop ebx
add esp, 0x5c
ret 0x18
mov ebp, edx
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x84]
push eax
mov eax, dword [esp + 0x68]
push ecx
mov ecx, dword [esp + 0x48]
push eax
xor eax, eax
cmp word [edx], ax
push ecx
sete al
lea eax, [eax + eax + 1]
push eax
push ebp
call fcn.3004bfe8
add esp, 0x20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret 0x18
push 0x57
call dword [sym.imp.KERNEL32.dll_SetLastError]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x5c
ret 0x18
cmp edx, 0xffffffff
jg 0x3004f7ee
mov edx, 0xfffffffe
cmp ecx, 0xffffffff
jg 0x3004f7f8
mov ecx, 0xfffffffe
push esi
push edx
mov edx, dword [esp + 0x88]
push edx
push ecx
mov ecx, dword [esp + 0x88]
push ecx
push eax
push 0x300a08ec
call fcn.3004d2dc
add esp, 0x1c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret 0x18