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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x38
push esi
mov esi, ecx
push edi
mov dword [esp + 0x38], esi
mov edi, dword [esi + 0xc0]
mov ecx, dword [esi + 0x7c]
mov dword [esp + 0x3c], edi
cmp edi, ecx
jl 0x403892
mov byte [esp + 0x10], 0
mov eax, 1
mov dword [esp + 0x14], 1
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], 0
movups xmm0, xmmword [esp + 0x10]
movups xmmword [esi + 0xb0], xmm0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [esi + 0xc8], 0
mov eax, dword [esi + 0x78]
mov dl, byte [edi + eax]
mov byte [esp + 0x2f], dl
je 0x40391b
cmp dl, 0x5c
jne 0x4038c0
lea eax, [edi + 1]
cmp eax, ecx
jge 0x4038c0
mov eax, dword [esi + 0x78]
mov al, byte [edi + eax + 1]
cmp al, 0x45
je case.0x403976.69
mov ecx, dword [esi + 0xcc]
test ecx, ecx
je 0x4038e3
movsx eax, dl
push eax
call ecx
mov dword [esp + 0x1c], edi
add esp, 4
mov edi, dword [esi + 0xc0]
mov byte [esp + 0x10], al
jmp 0x4038eb
mov byte [esp + 0x10], dl
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], 0
lea eax, [edi + 1]
mov dword [esp + 0x1c], 1
movups xmm0, xmmword [esp + 0x10]
mov dword [esi + 0xc0], eax
mov eax, 1
movups xmmword [esi + 0xb0], xmm0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
movsx eax, dl
cmp eax, 0x7d
ja case.0x40392e.0
movzx eax, byte [eax + 0x404048]
jmp dword [eax*4 + 0x404018]
lea eax, [edi + 1]
cmp eax, ecx
jl 0x403944
xor dh, dh
mov byte [esp + 0x2f], dh
jmp 0x40395b
mov eax, dword [esi + 0x78]
mov dh, byte [edi + eax + 1]
mov al, dh
mov byte [esp + 0x2f], dh
sub al, 0x30
cmp al, 9
jbe 0x403e7f
movsx eax, dh
mov dword [esp + 0x30], 2
cmp eax, 0x7a
ja case.0x403976.1
movzx eax, byte [eax + 0x404110]
jmp dword [eax*4 + 0x4040c8]
mov eax, dword [esp + 0x30]
mov byte [esp + 0x10], dh
mov dword [esp + 0x14], 1
mov dword [esp + 0x1c], 2
jmp 0x403ff5
cmp dword [esi + 0xc4], 0
mov eax, dword [esp + 0x30]
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], 2
jle 0x4039c5
mov byte [esp + 0x10], 8
mov dword [esp + 0x14], 0
jmp 0x403ff9
mov byte [esp + 0x10], dh
mov dword [esp + 0x14], 1
jmp 0x403ff9
mov edx, dword [esi + 0x78]
lea eax, [edi + 2]
cmp eax, ecx
jge 0x4039eb
mov al, byte [edx + eax]
cmp al, 0x7b
je case.0x403976.117
test edx, edx
mov eax, 0x4218d0
cmovne eax, edx
xor ecx, ecx
lea esi, [eax + edi]
xor edi, edi
xor edx, edx
nop
mov al, byte [esi + edi + 2]
cmp al, 0x30
jl 0x403a14
cmp al, 0x39
jg 0x403a14
shl ecx, 4
add ecx, 0xffffffd0
jmp 0x403a36
cmp al, 0x41
jl 0x403a24
cmp al, 0x46
jg 0x403a24
shl ecx, 4
add ecx, 0xffffffc9
jmp 0x403a36
mov dword [esp + 0x34], edx
cmp al, 0x61
jl 0x403a47
cmp al, 0x66
jg 0x403a4b
shl ecx, 4
add ecx, 0xffffffa9
inc edi
movsx eax, al
add ecx, eax
mov edx, edi
mov dword [esp + 0x34], edx
cmp edi, 2
jl 0x403a00
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
lea eax, [edx + 2]
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], eax
test edx, edx
jg 0x403a6a
mov cl, byte [esp + 0x2f]
mov byte [esp + 0x10], cl
mov ecx, dword [esi + 0xc0]
mov dword [esp + 0x18], ecx
jmp 0x403ff9
mov edx, dword [esi + 0x78]
lea eax, [edi + 2]
cmp eax, ecx
jge 0x403a92
mov al, byte [edx + eax]
cmp al, 0x7b
je 0x403b22
test edx, edx
mov eax, 0x4218d0
cmovne eax, edx
xor ecx, ecx
lea esi, [eax + edi]
xor edi, edi
xor edx, edx
mov al, byte [esi + edi + 2]
cmp al, 0x30
jl 0x403ab9
cmp al, 0x39
jg 0x403ab9
shl ecx, 4
add ecx, 0xffffffd0
jmp 0x403adb
cmp al, 0x41
jl 0x403ac9
cmp al, 0x46
jg 0x403ac9
shl ecx, 4
add ecx, 0xffffffc9
jmp 0x403adb
mov dword [esp + 0x34], edx
cmp al, 0x61
jl 0x403aec
cmp al, 0x66
jg 0x403af0
shl ecx, 4
add ecx, 0xffffffa9
inc edi
movsx eax, al
add ecx, eax
mov edx, edi
mov dword [esp + 0x34], edx
cmp edi, 4
jl 0x403aa5
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
lea eax, [edx + 2]
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], eax
test edx, edx
jle 0x403a66
mov byte [esp + 0x10], cl
mov ecx, dword [esi + 0xc0]
mov dword [esp + 0x18], ecx
jmp 0x403ff9
test edx, edx
mov eax, 0x4218d0
cmovne eax, edx
xor ecx, ecx
mov dword [esp + 0x34], ecx
lea esi, [edi + eax]
xor edi, edi
xor edx, edx
nop dword [eax]
mov al, byte [esi + edi + 3]
cmp al, 0x30
jl 0x403b54
cmp al, 0x39
jg 0x403b54
movsx eax, al
add eax, 0xffffffd0
jmp 0x403b7a
cmp al, 0x41
jl 0x403b64
cmp al, 0x46
jg 0x403b64
movsx eax, al
add eax, 0xffffffc9
jmp 0x403b7a
mov dword [esp + 0x34], edx
cmp al, 0x61
jl 0x403b8b
mov dword [esp + 0x34], edx
cmp al, 0x66
jg 0x403b8b
movsx eax, al
add eax, 0xffffffa9
shl ecx, 4
inc edi
add ecx, eax
mov edx, edi
mov eax, edx
cmp edi, 8
jl 0x403b40
jmp 0x403b8f
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x3c]
add eax, 2
mov esi, dword [esp + 0x38]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
lea edx, [edi + eax]
mov ecx, dword [esi + 0x7c]
cmp edx, ecx
jge 0x403bc7
mov edi, dword [esi + 0x78]
cmp byte [edi + edx], 0x7d
mov eax, dword [esp + 0x30]
je 0x403bc3
inc eax
inc edx
mov dword [esp + 0x30], eax
cmp edx, ecx
jl 0x403baf
mov edi, dword [esp + 0x3c]
inc eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x34]
mov byte [esp + 0x10], al
mov eax, dword [esp + 0x30]
mov dword [esp + 0x1c], eax
jmp 0x403ff5
mov byte [esp + 0x10], 7
mov eax, dword [esp + 0x30]
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], 2
jmp 0x403ff5
mov byte [esp + 0x10], 0xc
jmp 0x403bee
mov byte [esp + 0x10], 0xa
jmp 0x403bee
mov byte [esp + 0x10], 0xd
jmp 0x403bee
mov byte [esp + 0x10], 9
jmp 0x403bee
mov byte [esp + 0x10], 0xb
jmp 0x403bee
mov byte [esp + 0x10], 0x1b
jmp 0x403bee
cmp dword [esi + 0xc4], 0
jle case.0x403976.65
lea eax, [edi + 2]
mov dword [esi + 0xc0], eax
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [esi + 0xcc], 0
jne case.0x403976.81
mov dword [esi + 0xcc], fcn.0040eddd
cmp dword [esi + 0xcc], 0
jne case.0x403976.81
mov dword [esi + 0xcc], fcn.0040ee0d
lea eax, [edi + 2]
mov dword [esi + 0xc8], 1
mov dword [esi + 0xc0], eax
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
lea eax, [edi + 2]
mov dword [esi + 0xcc], 0
mov dword [esi + 0xc0], eax
xor eax, eax
mov dword [esi + 0xc8], 0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
lea eax, [edi + 1]
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], edi
cmp eax, ecx
jl 0x403cda
mov eax, 1
mov byte [esp + 0x10], dl
mov dword [esp + 0x1c], eax
jmp 0x403ff9
mov eax, dword [esp + 0x30]
mov byte [esp + 0x10], dh
mov dword [esp + 0x1c], 2
jmp 0x403ff9
mov byte [esp + 0x10], dh
jmp 0x403bee
cmp dword [esi + 0xc4], 0
mov eax, 1
mov byte [esp + 0x10], dl
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], 1
jle 0x4039c9
mov dword [esp + 0x14], 0
jmp 0x403ff9
cmp dword [esi + 0xc4], 0
mov eax, 1
mov byte [esp + 0x10], dl
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], 1
jle 0x4039b8
mov dword [esp + 0x14], eax
jmp 0x403ff9
lea eax, [edi + 1]
cmp eax, ecx
jl 0x403d5d
xor dh, dh
jmp 0x403d64
mov eax, dword [esi + 0x78]
mov dh, byte [edi + eax + 1]
lea eax, [edi + 2]
mov dword [esp + 0x38], eax
cmp eax, ecx
jl 0x403d76
mov byte [esp + 0x2f], 0
jmp 0x403d8b
mov eax, dword [esi + 0x78]
mov ecx, dword [esp + 0x38]
mov al, byte [ecx + eax]
mov ecx, dword [esi + 0x7c]
mov byte [esp + 0x2f], al
mov eax, dword [esp + 0x38]
cmp dh, 0x3f
jne case.0x40392e.36
cmp byte [esp + 0x2f], 0x23
jne case.0x40392e.36
mov edi, eax
mov dword [esi + 0xc0], edi
cmp edi, ecx
jge 0x403ddb
mov edx, eax
nop dword [eax]
cmp edx, ecx
jge 0x403dbe
mov eax, dword [esi + 0x78]
mov al, byte [edx + eax]
cmp al, 0x29
je 0x403dcd
lea edi, [edx + 1]
mov dword [esi + 0xc0], edi
mov edx, edi
cmp edi, ecx
jl 0x403db0
cmp edi, ecx
jge 0x403ddb
mov eax, dword [esi + 0x78]
mov al, byte [edi + eax]
cmp al, 0x29
je 0x403e3d
mov eax, 1
add eax, edi
mov dword [esi + 0xc0], eax
mov eax, 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret
test byte [esi + 4], 0x20
je case.0x40392e.0
inc edi
mov dword [esi + 0xc0], edi
cmp edi, ecx
jge 0x403e2b
mov eax, dword [esi + 0x78]
mov al, byte [edi + eax]
cmp al, 0xa
je 0x403e2b
cmp edi, ecx
jge 0x403e20
mov eax, dword [esi + 0x78]
mov al, byte [edi + eax]
cmp al, 0xd
je 0x403e2b
inc edi
mov dword [esi + 0xc0], edi
cmp edi, ecx
jl 0x403e08
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
test byte [esi + 4], 0x20
je case.0x40392e.0
lea eax, [edi + 1]
mov dword [esi + 0xc0], eax
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0xc4]
test eax, eax
je 0x403e78
lea eax, [edi + 1]
cmp eax, ecx
jge case.0x40392e.0
mov eax, dword [esi + 0x78]
mov al, byte [edi + eax + 1]
cmp al, 0x3a
jne case.0x40392e.0
mov eax, dword [esi + 0xc4]
inc eax
mov dword [esi + 0xc4], eax
mov dword [esp + 0x14], 1
jmp 0x403fe8
mov eax, dword [esi + 0xc4]
mov byte [esp + 0x10], dl
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], 1
test eax, eax
jle 0x403ebf
dec eax
mov dword [esp + 0x14], 1
mov dword [esi + 0xc4], eax
mov eax, 1
jmp 0x403ff9
mov dword [esp + 0x14], 0
mov eax, 1
jmp 0x403ff9
lea eax, [esp + 0x10]
mov byte [esp + 0x10], 0x5b
push eax
lea ecx, [esi + 0xa0]
mov dword [esp + 0x18], 1
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
call fcn.004036b0
test eax, eax
mov dword [esp + 0x18], edi
mov al, byte [esp + 0x2f]
mov byte [esp + 0x10], al
mov eax, 1
mov dword [esp + 0x1c], 1
je 0x4039b8
mov dword [esp + 0x14], eax
jmp 0x403ff9
cmp dword [esi + 0xc4], 0
je 0x403fd6
lea ecx, [esp + 0x10]
mov byte [esp + 0x10], 0x5b
push ecx
lea ecx, [esi + 0xa0]
mov dword [esp + 0x18], 1
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
call fcn.004036b0
test eax, eax
jne 0x403fd2
mov dword [esp + 0x18], eax
lea ecx, [esi + 0x90]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x10]
push eax
mov byte [esp + 0x14], 0x5b
mov dword [esp + 0x18], 1
call fcn.004036b0
test eax, eax
je 0x403fc0
lea eax, [esp + 0x10]
mov byte [esp + 0x10], 0x3a
push eax
lea ecx, [esi + 0xa0]
mov dword [esp + 0x18], 1
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
call fcn.004036b0
test eax, eax
jne 0x403fd2
mov al, byte [esp + 0x2f]
mov byte [esp + 0x10], al
mov dword [esp + 0x14], 0
jmp 0x403fec
mov dl, byte [esp + 0x2f]
mov dword [esp + 0x14], 1
jmp 0x403fe8
mov dword [esp + 0x14], 0
mov byte [esp + 0x10], dl
mov eax, 1
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], edi
movups xmm0, xmmword [esp + 0x10]
add eax, edi
mov dword [esi + 0xc0], eax
mov eax, 1
pop edi
movups xmmword [esi + 0xb0], xmm0
pop esi
mov esp, ebp
pop ebp
ret