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

Disassembly:
push 0xffffffffffffffff
push 0x7b36db
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x8c
push ebx
push ebp
push esi
mov esi, ecx
xor ebp, ebp
push edi
lea ecx, [esp + 0x14]
mov dword [esp + 0x10], ebp
call fcn.005ff150
mov ebx, 1
lea ecx, [esp + 0x1c]
mov dword [esp + 0xa4], ebx
call fcn.005ff150
lea ecx, [esp + 0x24]
mov byte [esp + 0xa4], 2
call fcn.005ff150
mov di, word [esp + 0xb0]
movzx eax, di
cmp eax, 0xffff
mov byte [esp + 0xa4], 3
jg case.default.0x78516f
je 0x7851c5
cmp eax, 6
ja case.default.0x78516f
jmp dword [eax*4 + 0x785a10]
push str.human
jmp 0x7851ca
push str.dwarf
jmp 0x7851ca
push 0x7cbd2c
jmp 0x7851ca
push str.gnome
jmp 0x7851ca
push str.halfling
jmp 0x7851ca
call fcn.0076f877
and eax, 0x80000001
jns 0x7851aa
dec eax
or eax, 0xfffffffe
inc eax
lea ecx, [esp + 0x14]
je 0x7851b7
push 0x7cbd2c
jmp 0x7851ce
push str.human
jmp 0x7851ce
push str.halforc
jmp 0x7851ca
push str.animal
lea ecx, [esp + 0x18]
call fcn.00630e20
cmp di, 0xffff
mov bl, byte [esp + 0xb4]
je 0x78561b
movzx eax, bl
dec eax
je 0x7856f9
dec eax
je 0x785697
sub eax, 2
je 0x7855b4
mov al, bl
and al, 1
je 0x78520e
test bl, 2
jne 0x785677
test al, al
je 0x785264
push 0x7d99f8
lea ecx, [esp + 0x30]
call fcn.00630ba0
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x70]
push ecx
mov bl, 0xa
lea ecx, [esp + 0x1c]
mov byte [esp + 0xac], bl
call fcn.00630ee0
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0xa8], 0xb
call fcn.00630d60
lea ecx, [esp + 0x6c]
mov byte [esp + 0xa4], bl
call fcn.00630d30
lea ecx, [esp + 0x2c]
jmp 0x7852b9
test bl, 2
je 0x7852cd
push 0x7d99f4
lea ecx, [esp + 0x38]
call fcn.00630ba0
lea edx, [esp + 0x34]
push edx
lea eax, [esp + 0x78]
mov bl, 0xc
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0xac], bl
call fcn.00630ee0
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0xa8], 0xd
call fcn.00630d60
lea ecx, [esp + 0x74]
mov byte [esp + 0xa4], bl
call fcn.00630d30
lea ecx, [esp + 0x34]
mov byte [esp + 0xa4], 3
call fcn.00630d30
mov bl, byte [esp + 0xb4]
test bl, 4
je 0x785335
push 0x7ce2f0
lea ecx, [esp + 0x58]
call fcn.00630ba0
lea ecx, [esp + 0x54]
push ecx
lea edx, [esp + 0x90]
mov bl, 0xe
push edx
lea ecx, [esp + 0x1c]
mov byte [esp + 0xac], bl
call fcn.00630ee0
push eax
lea ecx, [esp + 0x28]
mov byte [esp + 0xa8], 0xf
call fcn.00630d60
lea ecx, [esp + 0x8c]
mov byte [esp + 0xa4], bl
call fcn.00630d30
lea ecx, [esp + 0x54]
mov byte [esp + 0xa4], 3
call fcn.00630d30
lea ecx, [esp + 0x1c]
call int.00406290
test eax, eax
je 0x785677
lea ecx, [esp + 0x24]
call int.00406290
test eax, eax
je 0x785677
lea ecx, [esp + 0x2c]
call fcn.005ff150
lea ecx, [esp + 0x34]
mov byte [esp + 0xa4], 0x10
call fcn.005ff150
cmp dword [esi + 0x1c], ebp
mov byte [esp + 0xa4], 0x11
je 0x785389
mov ecx, dword [esi + 8]
mov dword [esi + 0x1c], ebp
call fcn.00409e90
mov al, byte [esp + 0xb8]
test al, al
jbe 0x7857e6
movzx ebp, al
mov eax, 0x55555556
imul ebp
mov eax, edx
shr eax, 0x1f
add edx, eax
mov edi, edx
call fcn.0076f877
cdq
idiv edi
add edx, edi
test edx, edx
mov dword [esp + 0x4c], edx
jle 0x785572
lea ecx, [ebp + ebp]
mov ebp, dword [esp + 0x2c]
mov eax, 0x55555556
imul ecx
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov dword [esp + 0x54], edx
jmp 0x7853e0
mov ebx, dword [esp + 0x4c]
mov eax, dword [esp + 0x54]
xor edi, edi
cmp ebx, eax
jge 0x78552a
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x80]
mov ebp, 1
call fcn.00406ea0
push edi
lea eax, [esp + 0x80]
push eax
mov ecx, esi
call fcn.00784940
mov ecx, dword [esi + 8]
call fcn.00409e20
test eax, eax
je 0x785756
push ebx
lea ecx, [esp + 0x40]
push ecx
mov ecx, esi
mov dword [esi + 0x1c], ebp
call fcn.00784bc0
push eax
lea ecx, [esp + 0x30]
mov byte [esp + 0xa8], 0x12
call fcn.00630d60
lea ecx, [esp + 0x3c]
mov byte [esp + 0xa4], 0x11
call fcn.00630d30
cmp dword [esi + 0x1c], edi
je 0x78546b
mov ecx, dword [esi + 8]
mov dword [esi + 0x1c], edi
call fcn.00409e90
lea edx, [esp + 0x24]
push edx
lea ecx, [esp + 0x90]
call fcn.00406ea0
push edi
lea eax, [esp + 0x90]
push eax
mov ecx, esi
call fcn.00784940
mov ecx, dword [esi + 8]
call fcn.00409e20
test eax, eax
je 0x785756
xor ecx, ecx
mov cl, byte [esp + 0xb8]
sub cl, bl
lea edx, [esp + 0x5c]
mov dword [esi + 0x1c], ebp
push ecx
push edx
mov ecx, esi
call fcn.00784bc0
push eax
lea ecx, [esp + 0x38]
mov byte [esp + 0xa8], 0x13
call fcn.00630d60
lea ecx, [esp + 0x5c]
mov byte [esp + 0xa4], 0x11
call fcn.00630d30
cmp dword [esi + 0x1c], edi
je 0x7854ea
mov ecx, dword [esi + 8]
mov dword [esi + 0x1c], edi
call fcn.00409e90
mov ebp, dword [esp + 0x2c]
cmp ebp, edi
je 0x78551d
mov eax, ebp
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x7854f7
sub eax, edx
cmp eax, edi
jle 0x78551d
mov eax, dword [esp + 0x34]
cmp eax, edi
je 0x78551d
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x785510
sub eax, edx
cmp eax, edi
jg 0x78552a
mov eax, dword [esp + 0x54]
inc ebx
cmp ebx, eax
jl 0x7853f2
cmp ebp, edi
je 0x785561
mov eax, ebp
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x785533
sub eax, edx
cmp eax, edi
jle 0x785561
mov eax, dword [esp + 0x34]
cmp eax, edi
je 0x785561
lea edx, [eax + 1]
jmp 0x785550
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x785550
sub eax, edx
cmp eax, edi
jg 0x785772
mov eax, dword [esp + 0x4c]
dec eax
cmp eax, edi
mov dword [esp + 0x4c], eax
jg 0x7853e0
mov esi, dword [esp + 0xac]
push 0x7b5718
mov ecx, esi
call fcn.00630ba0
mov dword [esp + 0x10], 1
lea ecx, [esp + 0x34]
mov byte [esp + 0xa4], 0x10
call fcn.00630d30
lea ecx, [esp + 0x2c]
mov byte [esp + 0xa4], 3
call fcn.00630d30
jmp 0x7859bd
push 0x7ce2f0
lea ecx, [esp + 0x50]
call fcn.00630ba0
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0x80]
push ecx
mov bl, 8
lea ecx, [esp + 0x1c]
mov byte [esp + 0xac], bl
call fcn.00630ee0
push eax
lea ecx, [esp + 0x28]
mov byte [esp + 0xa8], 9
call fcn.00630d60
lea ecx, [esp + 0x7c]
mov byte [esp + 0xa4], bl
call fcn.00630d30
mov byte [esp + 0xa4], 3
lea ecx, [esp + 0x4c]
call fcn.00630d30
mov bl, byte [esp + 0xb4]
mov eax, dword [esi + 0x1c]
cmp eax, ebp
je 0x785643
cmp word [esi + 0x20], di
jne 0x785634
mov cl, byte [esi + 0x22]
mov dl, bl
and dl, 0xfb
cmp cl, dl
je 0x785677
cmp eax, ebp
je 0x785643
mov ecx, dword [esi + 8]
mov dword [esi + 0x1c], ebp
call fcn.00409e90
mov eax, dword [esp + 0x1c]
cmp eax, ebp
je 0x785912
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x785652
sub eax, edx
cmp eax, ebp
jle 0x785912
lea eax, [esp + 0x1c]
push eax
mov ecx, esi
call fcn.00784b70
test eax, eax
jne 0x785946
mov esi, dword [esp + 0xac]
push 0x7b5718
mov ecx, esi
call fcn.00630ba0
mov dword [esp + 0x10], 1
jmp 0x7859bd
push 0x7d99f4
lea ecx, [esp + 0x68]
call fcn.00630ba0
lea edx, [esp + 0x64]
push edx
lea eax, [esp + 0x60]
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0xac], 6
call fcn.00630ee0
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0xa8], 7
call fcn.00630d60
lea ecx, [esp + 0x5c]
mov byte [esp + 0xa4], 6
call fcn.00630d30
lea ecx, [esp + 0x64]
mov byte [esp + 0xa4], 3
call fcn.00630d30
jmp 0x78561b
push 0x7d99f8
lea ecx, [esp + 0x48]
call fcn.00630ba0
lea ecx, [esp + 0x44]
push ecx
lea edx, [esp + 0x40]
mov bl, 4
push edx
lea ecx, [esp + 0x1c]
mov byte [esp + 0xac], bl
call fcn.00630ee0
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0xa8], 5
call fcn.00630d60
lea ecx, [esp + 0x3c]
mov byte [esp + 0xa4], bl
add byte [eax], al
call fcn.00630d30
mov byte [esp + 0xa4], 3
lea ecx, [esp + 0x44]
jmp 0x78560f
mov esi, dword [esp + 0xac]
push 0x7b5718
mov ecx, esi
call fcn.00630ba0
mov dword [esp + 0x10], ebp
jmp 0x78558d
push 0x7b55d4
lea ecx, [esp + 0x48]
call fcn.00630ba0
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x40]
push ecx
mov bl, 0x14
lea ecx, [esp + 0x34]
mov byte [esp + 0xac], bl
call fcn.00630ee0
mov esi, dword [esp + 0xac]
lea edx, [esp + 0x34]
push edx
push esi
mov ecx, eax
mov byte [esp + 0xac], 0x15
call fcn.00630ee0
lea ecx, [esp + 0x3c]
mov dword [esp + 0x10], 1
mov byte [esp + 0xa4], bl
call fcn.00630d30
lea ecx, [esp + 0x44]
mov byte [esp + 0xa4], 0x11
call fcn.00630d30
jmp 0x78558d
lea eax, [esp + 0x1c]
push eax
mov ecx, esi
call fcn.00784b70
test eax, eax
je 0x785572
push ebp
lea ecx, [esp + 0x40]
push ecx
mov ecx, esi
call fcn.00784bc0
push eax
lea ecx, [esp + 0x30]
mov byte [esp + 0xa8], 0x16
call fcn.00630d60
lea ecx, [esp + 0x3c]
mov byte [esp + 0xa4], 0x11
call fcn.00630d30
mov ecx, esi
call fcn.007848c0
lea edx, [esp + 0x24]
push edx
mov ecx, esi
call fcn.00784b70
test eax, eax
je 0x785572
push ebp
lea eax, [esp + 0x40]
push eax
mov ecx, esi
call fcn.00784bc0
push eax
lea ecx, [esp + 0x38]
mov byte [esp + 0xa8], 0x17
call fcn.00630d60
lea ecx, [esp + 0x3c]
mov byte [esp + 0xa4], 0x11
call fcn.00630d30
mov ecx, esi
call fcn.007848c0
lea ecx, [esp + 0x2c]
call int.00406290
test eax, eax
jle 0x785572
lea ecx, [esp + 0x34]
call int.00406290
test eax, eax
jle 0x785572
push 0x7b55d4
lea ecx, [esp + 0x48]
call fcn.00630ba0
lea ecx, [esp + 0x44]
push ecx
lea edx, [esp + 0x40]
mov bl, 0x18
push edx
lea ecx, [esp + 0x34]
mov byte [esp + 0xac], bl
call fcn.00630ee0
mov esi, dword [esp + 0xac]
lea ecx, [esp + 0x34]
push ecx
push esi
mov ecx, eax
mov byte [esp + 0xac], 0x19
call fcn.00630ee0
lea ecx, [esp + 0x3c]
mov dword [esp + 0x10], 1
mov byte [esp + 0xa4], bl
call fcn.00630d30
lea ecx, [esp + 0x44]
mov byte [esp + 0xa4], 0x11
call fcn.00630d30
jmp 0x78558d
mov eax, dword [esp + 0x24]
cmp eax, ebp
je 0x785677
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x785921
sub eax, edx
cmp eax, ebp
jle 0x785677
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
call fcn.00784b70
test eax, eax
je 0x785677
mov edx, dword [esp + 0xb8]
mov word [esi + 0x20], di
mov edi, dword [esp + 0xac]
push edx
and bl, 0xfb
push edi
mov ecx, esi
mov byte [esi + 0x22], bl
call fcn.00784bc0
lea ecx, [esp + 0x24]
mov dword [esp + 0x10], 1
mov byte [esp + 0xa4], 2
call fcn.00630d30
lea ecx, [esp + 0x1c]
mov byte [esp + 0xa4], 1
call fcn.00630d30
lea ecx, [esp + 0x14]
mov byte [esp + 0xa4], 0
call fcn.00630d30
mov eax, edi
jmp 0x7859f2
mov esi, dword [esp + 0xac]
push 0x7b5718
mov ecx, esi
call fcn.00630ba0
mov dword [esp + 0x10], ebx
lea ecx, [esp + 0x24]
mov byte [esp + 0xa4], 2
call fcn.00630d30
lea ecx, [esp + 0x1c]
mov byte [esp + 0xa4], 1
call fcn.00630d30
lea ecx, [esp + 0x14]
mov byte [esp + 0xa4], 0
call fcn.00630d30
mov eax, esi
mov ecx, dword [esp + 0x9c]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x98
ret 0x10