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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xbc
mov dword [ebp - 0x7c], 0x527d48
mov dword [ebp - 0x78], 0x5f25ec
lea eax, [ebp - 0x74]
lea edx, [ebp - 0x18]
mov dword [eax], edx
mov edx, 0x512ccd
mov dword [eax + 4], edx
mov dword [eax + 8], esp
lea eax, [ebp - 0x94]
mov dword [esp], eax
call fcn.005341e8
lea edx, [ebp - 0x28]
mov dword [esp + 8], str.vocations.xml
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov dword [esp], edx
mov dword [ebp - 0x90], 0xffffffff
call fcn.005ec2d8
sub esp, 4
lea eax, [ebp - 0x28]
mov dword [esp], eax
mov dword [ebp - 0x90], 3
call fcn.00570f88
mov dword [esp], eax
call sub.libxml2_2.dll_xmlParseFile
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
je 0x51343e
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call sub.libxml2_2.dll_xmlDocGetRootElement
mov dword [ebp - 0x30], eax
mov dword [esp + 4], str.vocations
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 8]
mov dword [esp], eax
call sub.libxml2_2.dll_xmlStrcmp
test eax, eax
je 0x512c51
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call sub.libxml2_2.dll_xmlFreeDoc
lea eax, [ebp - 0x28]
mov dword [esp], eax
mov dword [ebp - 0x90], 0xffffffff
call fcn.00594258
mov dword [ebp - 0x98], 0
jmp 0x5134a4
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x34], 0
je 0x513429
lea eax, [ebp - 0x48]
mov dword [esp], eax
mov dword [ebp - 0x90], 3
call fcn.00593d98
mov dword [esp + 4], 0x603b38
mov eax, dword [ebp - 0x34]
mov eax, dword [eax + 8]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call sub.libxml2_2.dll_xmlStrcmp
test eax, eax
jne 0x5133d5
mov dword [esp], 0x13c
call fcn.0052a9a8
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp - 0x9c]
mov dword [esp], eax
mov dword [ebp - 0x90], 1
call fcn.005138ea
jmp 0x512d2d
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x603b41
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x5133a7
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x58], eax
lea eax, [ebp - 0x48]
mov dword [esp + 8], eax
mov dword [esp + 4], str.name
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
call fcn.00510f6c
test al, al
je 0x512d98
lea eax, [ebp - 0x48]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call fcn.005943f8
lea eax, [ebp - 0x48]
mov dword [esp + 8], eax
mov dword [esp + 4], str.description
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510f6c
test al, al
je 0x512dd5
lea eax, [ebp - 0x48]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x54]
add eax, 4
mov dword [esp], eax
call fcn.005943f8
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.gaincap
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x512e06
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x18], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.gainhp
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x512e37
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x20], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.gainmana
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x512e68
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x1c], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.gainhpticks
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x512e99
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 8], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.gainhpamount
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x512eca
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0xc], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.gainmanaticks
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x512efb
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x10], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.gainmanaamount
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x512f2c
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x14], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.gainsoulticks
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x512f5d
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x24], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.gainsoulamount
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x512f8e
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x28], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.maxsoul
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x512fcf
cmp dword [ebp - 0x4c], 0xfa
jle 0x512fc6
mov dword [ebp - 0x4c], 0xfa
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x2c], eax
lea eax, [ebp - 0x50]
mov dword [esp + 8], eax
mov dword [esp + 4], str.manamultiplier
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510f10
test al, al
je 0x513000
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x50]
mov dword [edx + 0x6c], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.attackspeed
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x513031
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x30], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.prevoc
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x513062
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x34], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.basespeed
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x513093
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x38], eax
mov eax, dword [ebp - 0x34]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x5c], eax
cmp dword [ebp - 0x5c], 0
je 0x513382
mov dword [esp + 4], str.skill
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 8]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call sub.libxml2_2.dll_xmlStrcmp
test eax, eax
jne 0x5131a7
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x603b41
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
call fcn.00510eb8
test al, al
je 0x513174
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 6
jbe 0x513136
mov dword [esp + 4], str.No_valid_skill_id.
mov dword [esp], 0x60f608
call fcn.005eb730
mov edx, eax
mov eax, dword [ebp - 0x60]
mov dword [esp + 4], eax
mov dword [esp], edx
call fcn.0059057c
mov dword [esp + 4], 0x5e8450
mov dword [esp], eax
call fcn.0058f72c
jmp 0x513374
lea eax, [ebp - 0x50]
mov dword [esp + 8], eax
mov dword [esp + 4], str.multiplier
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510f10
test al, al
je 0x513374
mov ecx, dword [ebp - 0x54]
mov edx, dword [ebp - 0x60]
mov eax, dword [ebp - 0x50]
mov dword [ecx + edx*4 + 0x50], eax
jmp 0x513374
mov dword [esp + 4], str.Missing_skill_id.
mov dword [esp], 0x60f608
mov dword [ebp - 0x90], 2
call fcn.005eb730
mov dword [esp + 4], 0x5e8450
mov dword [esp], eax
call fcn.0058f72c
jmp 0x513374
mov dword [esp + 4], str.diepercent
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 8]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call sub.libxml2_2.dll_xmlStrcmp
test eax, eax
jne 0x5132c3
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.experience
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
call fcn.00510eb8
test al, al
je 0x5131f6
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x3c], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.magic
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x513227
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x40], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.skill
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x513258
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x44], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.equipment
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x513289
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x48], eax
lea eax, [ebp - 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 4], str.container
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510eb8
test al, al
je 0x513374
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x4c]
mov dword [edx + 0x4c], eax
jmp 0x513374
mov dword [esp + 4], str.formula
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 8]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call sub.libxml2_2.dll_xmlStrcmp
test eax, eax
jne 0x513374
lea eax, [ebp - 0x50]
mov dword [esp + 8], eax
mov dword [esp + 4], str.damage
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
call fcn.00510f10
test al, al
je 0x513312
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x50]
mov dword [edx + 0x70], eax
lea eax, [ebp - 0x50]
mov dword [esp + 8], eax
mov dword [esp + 4], str.defense
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510f10
test al, al
je 0x513343
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x50]
mov dword [edx + 0x74], eax
lea eax, [ebp - 0x50]
mov dword [esp + 8], eax
mov dword [esp + 4], str.armor
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.00510f10
test al, al
je 0x513374
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x50]
mov dword [edx + 0x78], eax
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x5c], eax
jmp 0x51309c
lea eax, [ebp - 0x58]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [ebp - 0x90], 2
call fcn.005acafc
mov edx, eax
mov eax, dword [ebp - 0x54]
mov dword [edx], eax
jmp 0x5133d5
mov dword [esp + 4], str.Missing_vocation_id.
mov dword [esp], 0x60f608
mov dword [ebp - 0x90], 2
call fcn.005eb730
mov dword [esp + 4], 0x5e8450
mov dword [esp], eax
call fcn.0058f72c
mov eax, dword [ebp - 0x34]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x34], eax
jmp 0x51340f
lea eax, [ebp - 0x48]
mov dword [esp], eax
mov dword [ebp - 0x90], 3
call fcn.00594258
jmp 0x512c5a
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
mov dword [ebp - 0x90], 3
call sub.libxml2_2.dll_xmlFreeDoc
lea eax, [ebp - 0x28]
mov dword [esp], eax
mov dword [ebp - 0x90], 0xffffffff
call fcn.00594258
mov dword [ebp - 0x98], 1
jmp 0x5134a4
lea eax, [ebp - 0x94]
mov dword [esp], eax
call fcn.005342c8
mov eax, dword [ebp - 0x98]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret