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

Disassembly:
sub esp, 0x128
mov eax, dword [0x84dea4]
xor eax, esp
mov dword [esp + 0x124], eax
push esi
push str.Heroes
mov esi, ecx
call fcn.005b28d0
mov ecx, esi
call fcn.005b2690
mov ecx, esi
call fcn.005b28c0
push str.Stores_hero_ID_and_skills
mov ecx, esi
call fcn.005b2860
mov ecx, esi
call fcn.005b28c0
push str.integer_order__integer_heroid
push 0
push str.SetHero
mov ecx, esi
call fcn.005b3d00
mov dword [esp + 4], 3
xor eax, eax
lea ecx, [esi + 0xbc]
cmp dword [ecx], 0
je 0x5b4677
add eax, 1
add ecx, 4
cmp eax, 3
jl 0x5b4665
jmp 0x5b467b
mov dword [esp + 4], eax
push ebx
push ebp
push edi
xor edi, edi
cmp dword [esp + 0x10], edi
jle 0x5b4818
lea ebx, [ebx]
lea eax, [edi + 1]
push eax
push str.order___d
mov dword [esp + 0x24], eax
lea eax, [esp + 0x38]
push 0x104
push eax
call sub.Storm.dll_Ordinal_578
add esp, 0x10
test edi, edi
jne 0x5b46c1
lea ecx, [esp + 0x30]
push ecx
mov ecx, esi
call fcn.005b2c70
jmp 0x5b46cd
lea edx, [esp + 0x30]
push edx
mov ecx, esi
call fcn.005b2ce0
xor eax, eax
mov ecx, edi
xor ebp, ebp
sub ecx, eax
je 0x5b46f9
sub ecx, 1
je 0x5b46ed
sub ecx, 1
jne 0x5b4703
mov eax, str.hero_id3
mov ebp, str.skills3
jmp 0x5b4703
mov eax, str.hero_id2
mov ebp, str.skills2
jmp 0x5b4703
mov eax, str.hero_id
mov ebp, str.skills1
push str.heroid
push eax
mov ecx, esi
call fcn.005b2ba0
lea ecx, [edi + edi*4]
lea eax, [esi + 0xbc]
lea ebx, [esi + ecx*8 + 0xe0]
mov dword [esp + 0x14], 1
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], 3
jmp 0x5b4740
mov ecx, dword [eax]
test ecx, ecx
je 0x5b47d5
lea edx, [esp + 0x28]
call fcn.00500b70
lea edx, [esp + 0x28]
push edx
push str.heroid___s
lea eax, [esp + 0x38]
push 0x104
push eax
call sub.Storm.dll_Ordinal_578
add esp, 0x10
cmp dword [esp + 0x14], 0
je 0x5b478c
lea ecx, [esp + 0x30]
push ecx
mov ecx, esi
call fcn.005b2c70
mov dword [esp + 0x14], 0
jmp 0x5b4798
lea edx, [esp + 0x30]
push edx
mov ecx, esi
call fcn.005b2ce0
xor eax, eax
lea ebx, [ebx]
lea edi, [eax + 1]
push edi
push ebp
push str._s__2d_
lea eax, [esp + 0x3c]
push 0x104
push eax
call sub.Storm.dll_Ordinal_578
mov ecx, dword [ebx]
add esp, 0x14
push ecx
lea edx, [esp + 0x34]
push edx
mov ecx, esi
call fcn.005b2c10
mov eax, edi
add ebx, 4
cmp eax, 0xa
jl 0x5b47a0
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x20]
add eax, 4
add ebx, 0x78
sub dword [esp + 0x18], 1
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], ebx
jne 0x5b4740
mov ecx, esi
call fcn.005b2d70
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
cmp edi, eax
jl 0x5b4690
test eax, eax
jle 0x5b4818
mov ecx, esi
call fcn.005b2d70
mov ecx, esi
call fcn.005b2970
mov ecx, esi
call fcn.005b2690
mov ecx, esi
call fcn.005b28c0
push str.Selects_hero_IDs_for_three_possible_heroes
mov ecx, esi
call fcn.005b2860
mov ecx, esi
call fcn.005b28c0
push 0
push 0
push str.SelectHeroes
mov ecx, esi
call fcn.005b3d00
push str.GetRandomInt_1_100_
push str.roll
push str.integer
mov ecx, esi
call fcn.005b2b00
mov edi, 1
mov ebp, 0x7d6008
lea ecx, [esi + 0xc8]
xor eax, eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], ebp
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x10]
mov ecx, dword [edx]
test ecx, ecx
je 0x5b4943
add eax, ecx
cmp eax, 0x64
mov dword [esp + 0x1c], eax
jl 0x5b48aa
test edi, edi
jne 0x5b48e8
mov ecx, esi
call fcn.005b2d50
jmp 0x5b48e8
push eax
push str.roll____d
lea eax, [esp + 0x38]
push 0x104
push eax
call sub.Storm.dll_Ordinal_578
add esp, 0x10
test edi, edi
je 0x5b48dc
lea ecx, [esp + 0x30]
push ecx
mov ecx, esi
call fcn.005b2c70
mov dword [esp + 0x14], 0
jmp 0x5b48e8
lea edx, [esp + 0x30]
push edx
mov ecx, esi
call fcn.005b2ce0
xor edi, edi
lea ebx, [ebx]
mov eax, dword [ebp]
mov ebx, dword [esi + eax*4 + 0xbc]
test ebx, ebx
je 0x5b492c
push 0
push 2
push str.SetHero
mov ecx, esi
call fcn.005b25a0
push 0
lea ecx, [edi + 1]
push ecx
mov ecx, esi
call fcn.005b2250
push 0
push ebx
mov ecx, esi
call fcn.005b2390
mov ecx, esi
call fcn.005b2640
add edi, 1
add ebp, 4
cmp edi, 3
jl 0x5b48f0
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
add dword [esp + 0x10], 4
add ebp, 0xc
cmp ebp, 0x7d6050
mov dword [esp + 0x18], ebp
jl 0x5b4884
test edi, edi
pop edi
pop ebp
pop ebx
jne 0x5b4969
mov ecx, esi
call fcn.005b2d70
mov ecx, esi
call fcn.005b2970
mov ecx, esi
call fcn.005b2690
mov ecx, esi
call fcn.005b28c0
push str.Returns_the_hero_skill_for_the_given_hero_and_level
mov ecx, esi
call fcn.005b2860
mov ecx, esi
call fcn.005b28c0
push 0
push str.integer
push str.ChooseHeroSkill
mov ecx, esi
call fcn.005b3d00
push str.GetHeroId__
push str.curHero
push str.integer
mov ecx, esi
call fcn.005b2b00
push str.GetHeroLevelAI__
push str.level
push str.integer
mov ecx, esi
call fcn.005b2b00
mov ecx, esi
call fcn.005b2690
push str.level___max_hero_level
mov ecx, esi
call fcn.005b2c70
push str.level
push str.max_hero_level
mov ecx, esi
call fcn.005b2ba0
mov ecx, esi
call fcn.005b2d70
mov ecx, esi
call fcn.005b2690
push str.curHero__hero_id
mov ecx, esi
call fcn.005b2c70
push str.skills1_level_
mov ecx, esi
call fcn.005b2e30
push str.curHero__hero_id2
mov ecx, esi
call fcn.005b2ce0
push str.skills2_level_
mov ecx, esi
call fcn.005b2e30
push str.curHero__hero_id3
mov ecx, esi
call fcn.005b2ce0
push str.skills3_level_
mov ecx, esi
call fcn.005b2e30
mov ecx, esi
call fcn.005b2d70
push 0x7d61b8
mov ecx, esi
call fcn.005b2e30
mov ecx, esi
call fcn.005b2970
mov ecx, esi
call fcn.005b2690
mov ecx, dword [esp + 0x128]
pop esi
xor ecx, esp
call fcn.00735f58
add esp, 0x128
ret