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

Disassembly:
sub esp, 0x45c
mov eax, dword [str..___]
mov edx, dword [0x41a1b8]
push ebx
push ebp
push esi
mov esi, ecx
mov cl, byte [0x41a1d0]
mov dword [esp + 0x64], eax
mov eax, dword [0x41a1bc]
mov byte [esp + 0x68], cl
mov ecx, dword [0x41a1c0]
mov dword [esp + 0x70], eax
mov ax, word [0x41a1c8]
mov dword [esp + 0x6c], edx
mov edx, dword [0x41a1c4]
mov dword [esp + 0x74], ecx
mov cl, byte [0x41a1ca]
mov word [esp + 0x7c], ax
mov eax, dword [esi + 0x20]
mov dword [esp + 0x78], edx
mov edx, dword [esi + 0x28]
mov byte [esp + 0x7e], cl
mov ecx, dword [esp + 0x470]
push edi
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x478]
mov dword [esp + 0x64], edx
mov edx, dword [esi + 0x1c]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esi + 0xc]
mov edi, 1
xor ebx, ebx
xor ebp, ebp
cmp eax, edi
mov dword [esp + 0x10], esi
mov dword [esp + 0x50], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x28], ecx
jne 0x403a1b
mov eax, dword [esi + 0x18]
push ecx
cmp eax, ebx
mov eax, dword [esi + 8]
push eax
jne 0x403a00
mov edx, dword [esi + 0x14]
push edx
mov edx, dword [esi + 0x10]
add edx, 4
push edx
push ecx
mov ecx, dword [esi + 4]
push eax
mov eax, dword [esi]
push eax
call fcn.00403280
jmp 0x403a1b
mov ebx, dword [esi + 0x14]
push ebx
mov ebx, dword [esi + 0x10]
lea edx, [ebx + edx + 4]
push edx
push ecx
mov ecx, dword [esi + 4]
push eax
mov eax, dword [esi]
push eax
call fcn.00403280
xor ebx, ebx
cmp dword [esp + 0x47c], edi
jne 0x403a2d
mov ecx, dword [esi + 0x2c]
mov dword [esp + 0x54], ecx
jmp 0x403a31
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x470]
mov eax, dword [esi + 8]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x14]
add eax, ecx
mov dword [esp + 0x18], eax
mov edi, 1
xor eax, eax
mov dword [esp + 0x24], edx
mov dword [esp + 0x60], edi
mov dword [esp + 0x1c], eax
jmp 0x403a62
mov edi, dword [esp + 0x60]
mov ecx, dword [esp + 0x50]
test ecx, ecx
jne 0x40409c
mov eax, dword [esp + 0x44]
xor ecx, ecx
cmp eax, ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x20], ecx
je 0x403a88
mov dword [esp + 0x18], eax
mov dword [esp + 0x44], ecx
mov eax, dword [esp + 0x64]
mov ecx, dword [esi]
push eax
mov byte [esp + 0x88], 0
call fcn.004027d0
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
push ecx
mov ecx, dword [esi]
push edx
call fcn.004027f0
mov eax, dword [esp + 0x48]
mov ecx, dword [esi]
push eax
call fcn.00402810
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x14]
xor eax, eax
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x38], eax
jmp 0x403add
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x1c]
xor edx, edx
cmp ecx, edx
jne 0x403fef
mov cl, byte [ebx + ebp]
cmp cl, 0x40
jne 0x403b3f
movsx ecx, byte [ebx + ebp + 1]
lea esi, [ecx - 0x21]
cmp esi, 0x58
ja case.0x403b08.52
xor ecx, ecx
mov cl, byte [esi + 0x404188]
jmp dword [ecx*4 + 0x404138]
movsx ecx, byte [ebx + ebp + 2]
add ebp, 5
lea edx, [ecx + ecx*4]
movsx ecx, byte [ebx + ebp - 2]
lea ecx, [ecx + edx*2]
lea edx, [ecx + ecx*4]
movsx ecx, byte [ebx + ebp - 1]
lea edx, [ecx + edx*2 - 0x14d0]
mov dword [esp + 0x54], edx
jmp 0x403add
add ebp, 2
jmp 0x403add
inc ebp
jmp case.0x403b08.52
test cl, cl
je 0x403f8f
mov al, byte [ebx + ebp]
lea esi, [ebx + ebp]
cmp al, 0x81
jb 0x403b55
cmp al, 0x9f
jbe 0x403b59
cmp al, 0xe1
jb 0x403b60
mov eax, 2
jmp 0x403b65
mov eax, 1
mov ecx, dword [esp + 0x20]
add ebp, eax
lea edi, [esp + ecx + 0x84]
mov ecx, eax
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]
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
imul edx, ecx
mov esi, dword [esp + 0x20]
add edi, edx
add esi, eax
mov al, byte [ebx + ebp]
mov dword [esp + 0x30], edi
xor edi, edi
cmp al, 0x81
mov dword [esp + 0x20], esi
mov dword [esp + 0x60], edi
jb 0x403bae
cmp al, 0x9f
jbe 0x403bb2
cmp al, 0xe0
jb 0x403bb9
mov eax, 2
jmp 0x403bbe
mov eax, 1
imul eax, ecx
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
mov esi, dword [ecx + 8]
sub eax, esi
mov esi, dword [esp + 0x18]
add eax, edx
mov edx, dword [ecx + 0x10]
add eax, esi
cmp eax, edx
jle 0x403ad9
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x403ad9
mov eax, ecx
mov esi, 1
cmp dword [eax + 0x18], esi
jne 0x403fe9
mov ecx, dword [esp + 0x2c]
mov edx, dword [eax + 0x1c]
cmp ecx, edx
jg 0x403fe9
mov al, byte [ebx + ebp]
test al, al
je 0x403fe9
xor ecx, ecx
cmp al, byte [esp + ecx + 0x68]
je 0x403f9e
inc ecx
cmp ecx, 5
jb 0x403c19
jmp 0x403fad
mov eax, 1
add ebp, 2
mov dword [esp + 0x1c], eax
jmp 0x403fef
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
mov eax, dword [esi + 0x10]
mov edx, dword [esi + 8]
sub eax, ecx
mov ecx, dword [esp + 0x18]
sub eax, ecx
add eax, edx
cdq
sub eax, edx
sar eax, 1
add ecx, eax
mov eax, 1
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
add ebp, 2
jmp 0x403ff3
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
mov eax, dword [esi + 0x10]
mov edx, dword [esi + 8]
sub eax, edi
add eax, edx
add ebp, 2
mov dword [esp + 0x18], eax
mov eax, 1
mov dword [esp + 0x1c], eax
jmp 0x403ff3
movsx eax, byte [ebx + ebp + 2]
movsx ecx, byte [ebx + ebp + 3]
lea eax, [eax + eax*4]
add ebp, 5
lea eax, [ecx + eax*2]
lea edx, [eax + eax*4]
movsx eax, byte [ebx + ebp - 1]
lea ecx, [eax + edx*2 - 0x14d0]
mov eax, 1
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x1c], eax
jmp 0x403fef
movsx eax, byte [ebx + ebp + 2]
movsx ecx, byte [ebx + ebp + 3]
lea eax, [eax + eax*4]
mov dword [esp + 0x1c], edx
add ebp, 5
lea eax, [ecx + eax*2]
movsx ecx, byte [ebx + ebp - 1]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 - 0x14d0]
mov dword [esp + 0x58], eax
mov eax, 1
jmp 0x403fef
movsx ecx, byte [ebx + ebp + 2]
movsx edx, byte [ebx + ebp + 3]
mov esi, dword [esp + 0x10]
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 8]
lea ecx, [edx + ecx*2]
movsx edx, byte [ebx + ebp + 4]
mov edi, eax
lea ecx, [ecx + ecx*4]
add edi, edx
mov edx, dword [esp + 0x18]
sub edx, eax
mov eax, dword [esi + 0x10]
lea ecx, [edi + ecx*2 - 0x14d0]
cmp edx, eax
mov dword [esp + 0x44], ecx
jle 0x403d45
mov dword [esp + 0x34], 1
mov eax, 1
add ebp, 5
jmp 0x403ff3
movsx eax, byte [ebx + ebp + 2]
movsx ecx, byte [ebx + ebp + 3]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2]
lea edx, [eax + eax*4]
movsx eax, byte [ebx + ebp + 4]
lea eax, [eax + edx*2 - 0x14d0]
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x2c], eax
mov eax, 1
add ebp, 5
jmp 0x403fef
movsx eax, byte [ebx + ebp + 2]
mov ecx, dword [esp + 0x14]
cmp edi, 1
lea edx, [eax + eax*4]
mov dword [esp + 0x40], ecx
movsx eax, byte [ebx + ebp + 3]
lea eax, [eax + edx*2]
movsx edx, byte [ebx + ebp + 4]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*2 - 0x14d0]
mov dword [esp + 0x14], eax
jne 0x403dbb
mov dword [esp + 0x24], eax
mov eax, 1
add ebp, 5
jmp 0x403fef
mov eax, dword [esp + 0x14]
movsx edx, byte [ebx + ebp + 3]
mov dword [esp + 0x40], eax
movsx eax, byte [ebx + ebp + 2]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*2]
movsx ecx, byte [ebx + ebp + 4]
lea eax, [eax + eax*4]
lea ecx, [ecx + eax*2 - 0x14d0]
mov eax, ecx
mov dword [esp + 0x14], ecx
cdq
sub eax, edx
sar eax, 1
cmp edi, 1
mov dword [esp + 0x2c], eax
jne 0x403e07
mov dword [esp + 0x24], ecx
mov eax, 1
add ebp, 5
jmp 0x403fef
movsx eax, byte [ebx + ebp + 2]
mov esi, dword [esp + 0x14]
lea edx, [eax + eax*4]
mov dword [esp + 0x40], esi
movsx eax, byte [ebx + ebp + 3]
lea eax, [eax + edx*2]
movsx edx, byte [ebx + ebp + 4]
lea ecx, [eax + eax*4]
mov eax, 0x51eb851f
lea ecx, [edx + ecx*2 - 0x14d0]
mov edx, ecx
imul ecx, esi
imul edx, dword [esp + 0x2c]
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x51eb851f
mov dword [esp + 0x2c], edx
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
cmp edi, 1
mov dword [esp + 0x14], edx
jne 0x403e78
mov dword [esp + 0x24], edx
mov eax, 1
add ebp, 5
jmp 0x403fef
mov eax, 1
add ebp, 2
mov dword [esp + 0x4c], eax
jmp 0x403fef
mov eax, 1
add ebp, 2
mov dword [esp + 0x48], eax
jmp 0x403fef
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], edx
mov eax, 1
add ebp, 2
jmp 0x403fef
movsx eax, byte [ebx + ebp + 2]
add ebp, 5
lea edx, [eax + eax*4]
movsx eax, byte [ebx + ebp - 2]
lea eax, [eax + edx*2]
movsx edx, byte [ebx + ebp - 1]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*2 - 0x14d0]
mov dword [esp + 0x18], eax
mov eax, 1
mov dword [esp + 0x34], eax
jmp 0x403fef
movsx eax, byte [ebx + ebp + 2]
movsx edx, byte [ebx + ebp + 3]
lea ecx, [eax + eax*4]
add ebp, 5
lea eax, [edx + ecx*2]
movsx ecx, byte [ebx + ebp - 1]
lea eax, [eax + eax*4]
lea edx, [ecx + eax*2 - 0x14d0]
mov eax, 1
mov dword [esp + 0x28], edx
mov dword [esp + 0x34], eax
jmp 0x403fef
xor esi, esi
lea edx, [ebx + ebp + 4]
mov dword [esp + 0x38], 3
mov ecx, 2
mov al, byte [edx + ecx]
shl esi, 4
cmp al, 0x30
jl 0x403f4d
cmp al, 0x39
jg 0x403f4d
movsx edi, al
sub edi, 0x30
or esi, edi
cmp al, 0x61
jl 0x403f5d
cmp al, 0x66
jg 0x403f5d
movsx edi, al
sub edi, 0x57
or esi, edi
cmp al, 0x41
jl 0x403f6d
cmp al, 0x46
jg 0x403f6d
movsx eax, al
sub eax, 0x37
or esi, eax
inc ecx
cmp ecx, 4
jl 0x403f37
mov eax, dword [esp + 0x38]
sub edx, 2
dec eax
mov dword [esp + 0x38], eax
jne 0x403f32
mov dword [esp + 0x64], esi
mov eax, 1
add ebp, 8
jmp 0x403fef
mov eax, 1
mov dword [esp + 0x1c], eax
mov dword [esp + 0x50], eax
jmp 0x403fef
mov ecx, dword [esp + 0x20]
mov byte [esp + ecx + 0x84], al
inc ecx
inc ebp
jmp 0x403fe5
xor ecx, ecx
cmp al, byte [esp + ecx + 0x70]
jne 0x403fbf
mov dl, byte [ebx + ebp + 1]
cmp dl, byte [esp + ecx + 0x71]
je 0x403fc9
add ecx, 2
cmp ecx, 0x13
jb 0x403faf
jmp 0x403fe9
mov ecx, dword [esp + 0x20]
mov byte [esp + ecx + 0x84], al
mov al, byte [ebx + ebp + 1]
mov byte [esp + ecx + 0x85], al
add ecx, 2
add ebp, 2
mov dword [esp + 0x20], ecx
mov eax, esi
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x404082
cmp eax, 1
jne 0x404082
mov edi, dword [esp + 0x40]
mov byte [esp + ecx + 0x84], 0
cmp edi, 0x10
jge 0x404054
cmp dword [esp + 0x24], edi
je 0x404054
mov ecx, dword [esp + 0x3c]
mov eax, 0x10
sub eax, edi
lea edx, [esp + 0x84]
mov dword [esp + 0x3c], eax
push ecx
fild dword [esp + 0x40]
push edx
fmul qword [0x418258]
call fcn.00410c38
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
sub ecx, eax
sub ecx, edi
lea eax, [ecx + edx - 1]
jmp 0x40406d
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x84]
push ecx
push edx
mov edx, dword [esp + 0x30]
sub eax, edi
add eax, edx
mov edi, dword [esp + 0x20]
mov ecx, dword [esi]
push eax
push edi
call fcn.00402820
add edi, dword [esp + 0x30]
mov dword [esp + 0x18], edi
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x1c]
add edx, ecx
test eax, eax
mov dword [esp + 0x28], edx
je 0x403a5e
cmp eax, 1
jne 0x4040d4
mov edx, dword [esi + 0x24]
mov eax, dword [esp + 0x5c]
mov edi, dword [esp + 0x24]
mov ecx, dword [esi + 0x14]
add edx, eax
mov eax, dword [esp + 0x28]
add edx, edi
mov edi, dword [esi + 0xc]
add eax, edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x28], eax
add ecx, edi
add eax, edx
cmp eax, ecx
jle 0x4040d4
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4040e0
mov eax, dword [esp + 0x50]
test eax, eax
je 0x403a38
mov eax, dword [esi + 0x18]
test eax, eax
jne 0x4040f3
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x10]
push eax
add ecx, 3
jmp 0x404101
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x1c]
push ecx
lea ecx, [edx + eax + 3]
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 8]
push ecx
mov ecx, dword [esi]
push edx
push eax
call fcn.004025d0
mov ecx, dword [esi]
push 0
call fcn.00402810
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
xor ecx, ecx
cmp ebp, eax
pop edi
pop esi
sete cl
pop ebp
mov eax, ecx
pop ebx
add esp, 0x45c
ret 0x10