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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xa8
mov eax, dword [0x100df00c]
xor eax, esp
mov dword [esp + 0xa4], eax
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
push esi
push edi
mov edi, dword [edx + 0xc]
mov esi, ecx
lea eax, [eax + eax*2]
mov dword [esp + 0x60], edx
shl eax, 4
add edi, eax
mov dword [esp + 0x64], eax
mov eax, dword [edx]
mov dword [esp + 0xc], esi
mov dword [esp + 0x5c], 0
movzx ecx, word [edi + 0xc]
mov dword [esp + 0x28], 0
mov dword [esp + 0x74], edi
lea eax, [eax + ecx*2]
mov dword [esp + 0x50], eax
mov eax, dword [edx + 8]
and eax, 1
mov dword [esp + 0x2c], eax
mov eax, dword [edx + 0x20]
mov edx, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x64]
and eax, 0x2000000
mov dword [esp + 0x40], eax
mov eax, dword [esi + 0x60]
mov eax, dword [eax]
mov dword [esp + 0x58], eax
movzx eax, word [eax + 0xa]
and eax, 0x8000
mov dword [esp + 0x18], eax
lea eax, [edx + ecx*4]
neg edx
mov ecx, esi
sbb edx, edx
and edx, eax
mov dword [esp + 0x30], edx
call fcn.1005c250
cmp dword [esp + 0x18], 0
mov dword [edi + 0x24], eax
mov dword [edi + 0x28], 0
mov dword [edi + 0x2c], 0
je 0x1005ca71
lea eax, [esp + 0x80]
mov dword [esp + 0x90], 0
xorps xmm0, xmm0
mov dword [esp + 0x94], 0
push eax
mov ecx, esi
mov dword [esp + 0x9c], 0
movups xmmword [esp + 0x84], xmm0
call fcn.1005c110
test eax, eax
je 0x1005ca71
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x84]
sub edx, dword [esp + 0x94]
sub eax, dword [esp + 0x90]
cmp byte [edi + 0x12], 0
mov dword [edi + 0x24], edx
mov dword [edi + 0x28], eax
je 0x1005ca46
mov eax, dword [esp + 0x80]
mov dword [edi + 0x2c], eax
cmp dword [esi + 0x24], 1
je 0x1005ca71
push edx
mov ecx, esi
call fcn.1002d750
push dword [edi + 0x28]
mov ecx, esi
mov dword [edi + 0x24], eax
call fcn.1002d750
push dword [edi + 0x2c]
mov ecx, esi
mov dword [edi + 0x28], eax
call fcn.1002d710
mov dword [edi + 0x2c], eax
cmp dword [esp + 0x18], 0
mov al, byte [edi + 0x12]
movzx edx, al
je 0x1005ca85
xor ecx, ecx
test al, al
cmovne edx, ecx
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
push 0
push dword [esi + 0x88]
mov eax, dword [eax + 0xc]
add ecx, eax
mov eax, dword [esi + 0xa4]
and eax, 4
push eax
push edx
push dword [ecx + 4]
push dword [ecx]
mov ecx, esi
call fcn.1005b100
cmp dword [esp + 0x2c], 0
mov eax, dword [sym.imp.HncFoundation.dll_HncIntMulDiv]
mov dword [esp + 0x4c], eax
je 0x1005cadd
cmp dword [esp + 0x30], 0
jne 0x1005cadd
cmp dword [esp + 0x18], 0
je 0x1005cfdb
cmp byte [edi + 0x12], 0
jne 0x1005cfdb
imul eax, dword [esi + 0x88], 0xb0
add eax, dword [0x100ed9a8]
je 0x1005d2e1
mov edx, dword [eax + 0xa0]
mov eax, edx
movzx ecx, word [edi + 0xe]
and eax, 4
mov dword [esp + 0x38], eax
mov eax, edx
and eax, 8
mov dword [esp + 0x20], 0
and edx, 2
mov dword [esp + 0x68], eax
mov eax, ecx
mov dword [esp + 0x7c], edx
mov dword [esp + 0x44], 0
mov dword [esp + 0x1c], 0
cmp word [esp + 0x20], cx
jae 0x1005cf89
mov edx, ecx
mov dword [esp + 0x6c], 0xac00
mov dword [esp + 0x70], 0xd7a3
mov dword [esp + 0x78], 0x3ff
mov ecx, dword [esp + 0x50]
movzx eax, dx
mov edx, dword [esp + 0x1c]
lea ecx, [ecx + edx*2]
mov dword [esp + 0x14], ecx
movzx ecx, word [ecx]
cmp ecx, 0x20
jne 0x1005cb77
mov eax, dword [ebp + 0x10]
jmp 0x1005cf15
cmp dword [esp + 0x68], 0
jne 0x1005cb85
cmp dword [esp + 0x38], 0
je 0x1005cbdc
cmp cx, word [esp + 0x6c]
jb 0x1005cbb2
cmp cx, word [esp + 0x70]
ja 0x1005cbb2
mov edx, dword [esp + 0x44]
test edx, edx
jne 0x1005cbd5
push 0xac00
mov ecx, esi
call fcn.1005b940
mov edx, eax
mov dword [esp + 0x44], edx
jmp 0x1005cf15
cmp dword [esp + 0x38], 0
je 0x1005cbdc
cmp ecx, 0x7f
jae 0x1005cbdc
mov edx, dword [esp + 0x44]
test edx, edx
jne 0x1005cbd5
push 0x41
mov ecx, esi
call fcn.1005b940
mov edx, eax
mov dword [esp + 0x44], edx
mov eax, edx
jmp 0x1005cf15
test byte [edi + 8], 8
je 0x1005ce38
lea ecx, [esp + 0x3c]
mov dword [esp + 0x20], 0
push ecx
lea ecx, [esp + 0x58]
sub eax, edx
push ecx
lea ecx, [esp + 0x50]
xorps xmm0, xmm0
push ecx
push eax
push dword [esp + 0x24]
movlpd qword [esp + 0xb8], xmm0
movaps xmmword [esp + 0x94], xmm0
call dword [sym.imp.HncFoundation.dll_int___stdcall_HncGetJamoBlock_unsigned_short_int_const___int__unsigned_short_int___unsigned_short_int___unsigned_short_int__]
mov edx, dword [esp + 0x3c]
mov esi, eax
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x34], esi
test ax, ax
jne 0x1005cc51
test cx, cx
je 0x1005cc69
test dx, dx
je 0x1005cc69
mov eax, 0x115f
inc esi
mov dword [esp + 0x48], eax
mov dword [esp + 0x34], esi
test cx, cx
jne 0x1005cc69
test dx, dx
je 0x1005cc69
mov ecx, 0x1160
inc esi
mov dword [esp + 0x54], ecx
mov dword [esp + 0x34], esi
cmp byte [edi + 0x18], 0
mov esi, dword [esp + 0x14]
movzx esi, word [esi]
je 0x1005cc8b
push edx
push ecx
push eax
call dword [sym.imp.HncFoundation.dll_unsigned_short_int___stdcall_HncJamoToPUASyllable_unsigned_short_int__unsigned_short_int__unsigned_short_int_]
movzx eax, ax
test ax, ax
je 0x1005ccf5
mov esi, eax
jmp 0x1005ccf5
test ax, ax
jne 0x1005cc97
test cx, cx
je 0x1005cca1
jmp 0x1005cc9c
test cx, cx
jne 0x1005cca1
test dx, dx
jne 0x1005ccc2
push edx
push ecx
push eax
call dword [sym.imp.HncFoundation.dll_unsigned_short_int___stdcall_HncJamoToHangulSyllable_unsigned_short_int__unsigned_short_int__unsigned_short_int_]
movzx eax, ax
test ax, ax
je 0x1005ccb6
mov esi, eax
jmp 0x1005ccf5
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x3c]
lea esi, [esp + 0xa4]
push esi
mov esi, dword [esp + 0x10]
push edx
push ecx
mov edx, eax
mov ecx, dword [esi + 0x88]
call fcn.1007b750
add esp, 0xc
mov dword [esp + 0x20], eax
test eax, eax
jne 0x1005cd26
push dword [esp + 0x48]
call dword [sym.imp.HncFoundation.dll_unsigned_short_int___stdcall_HncJamoToPUAJamo_unsigned_short_int_]
movzx esi, ax
mov ecx, dword [esp + 0xc]
movzx eax, si
push eax
call fcn.1005b940
mov edx, dword [esp + 0x24]
mov dword [esp + 0x80], eax
cmp edx, 1
jle 0x1005cd4c
lea ecx, [edx - 1]
xor eax, eax
lea edi, [esp + 0x84]
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x74]
jmp 0x1005cd4c
lea eax, [esp + 0x80]
push eax
lea eax, [esp + 0xa8]
push eax
push dword [esp + 0x3c]
mov eax, dword [esi + 8]
push 0
push dword [eax + 4]
call dword [sym.imp.GDI32.dll_GetCharWidthI]
mov edx, dword [esp + 0x24]
xor esi, esi
test edx, edx
jle 0x1005ce28
mov eax, dword [esp + 0xc]
cmp dword [eax + 0x24], 1
je 0x1005cd91
cmp dword [esp + 0x20], 0
je 0x1005cd91
mov edx, dword [esp + 0xc]
mov eax, dword [eax + 0x30]
mov ecx, dword [esp + esi*4 + 0x80]
mov edx, dword [edx + 0x28]
test eax, eax
jne 0x1005cd80
push 1
jmp 0x1005cd81
push eax
push edx
push ecx
call dword [esp + 0x58]
add esp, 0xc
mov dword [esp + esi*4 + 0x80], eax
cmp dword [esp + 0x18], 0
je 0x1005cdb2
cmp byte [edi + 0x12], 0
jne 0x1005cdb2
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + esi*4 + 0x80]
cmp ecx, eax
cmovl ecx, eax
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x30]
add eax, esi
cmp dword [esp + 0x2c], 0
mov ecx, dword [esp + esi*4 + 0x80]
mov dword [edx + eax*4], ecx
mov edx, dword [esp + 0x24]
jne 0x1005ce1f
test esi, esi
jne 0x1005cdfb
cmp dword [esp + 0x18], esi
je 0x1005cdee
cmp byte [edi + 0x12], 0
jne 0x1005cdee
mov eax, dword [esp + 0x14]
cmp word [eax], 0x20
je 0x1005cdee
mov ecx, dword [edi + 0x24]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
mov dword [eax + edx*4], ecx
jmp 0x1005ce1b
cmp dword [esp + 0x18], 0
je 0x1005ce14
cmp byte [edi + 0x12], 0
jne 0x1005ce14
mov edx, dword [esp + 0x14]
cmp word [edx], 0x20
je 0x1005ce14
xor ecx, ecx
mov edx, dword [esp + 0x10]
mov dword [edx + eax*4], ecx
mov edx, dword [esp + 0x24]
inc esi
cmp esi, edx
jl 0x1005cd56
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0xc]
dec eax
add eax, edx
jmp 0x1005cf70
inc edx
mov dword [esp + 0x20], edx
cmp edx, eax
jae 0x1005cef9
mov eax, dword [esp + 0x14]
movzx edx, word [eax + 2]
lea eax, [ecx + 0x2800]
mov esi, edx
cmp ax, word [esp + 0x78]
ja 0x1005cef5
lea eax, [esi + 0x2400]
mov esi, 0x3ff
cmp ax, si
ja 0x1005cef5
push edx
push ecx
call dword [sym.imp.HncFoundation.dll___MAKE_UCSCHAR_8]
mov esi, dword [esp + 0xc]
mov ecx, esi
push eax
call fcn.1005b940
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x1c]
test ecx, ecx
je 0x1005ce9f
mov dword [ecx + edx*4], eax
mov dword [ecx + edx*4 + 4], 0
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x1005cebe
cmp byte [edi + 0x12], 0
jne 0x1005cebe
mov esi, dword [esp + 0x28]
cmp esi, eax
cmovl esi, eax
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0xc]
cmp dword [esp + 0x2c], 0
jne 0x1005ceef
test ecx, ecx
je 0x1005cee0
cmp byte [edi + 0x12], 0
jne 0x1005cee0
mov ecx, dword [esp + 0x14]
cmp word [ecx], 0x20
je 0x1005cee0
test eax, eax
je 0x1005cee0
mov eax, dword [edi + 0x24]
mov ecx, dword [esp + 0x10]
mov dword [ecx + edx*4], eax
mov dword [ecx + edx*4 + 4], 0
mov eax, dword [esp + 0x20]
jmp 0x1005cf70
mov esi, dword [esp + 0xc]
lea eax, [ecx + 0x2400]
mov edx, 0x3ff
cmp ax, dx
jbe 0x1005cf13
push ecx
mov ecx, esi
call fcn.1005b940
jmp 0x1005cf15
xor eax, eax
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x1c]
test ecx, ecx
je 0x1005cf24
mov dword [ecx + edx*4], eax
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x1005cf43
cmp byte [edi + 0x12], 0
jne 0x1005cf43
mov esi, dword [esp + 0x28]
cmp esi, eax
cmovl esi, eax
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0xc]
cmp dword [esp + 0x2c], 0
jne 0x1005cf6c
test ecx, ecx
je 0x1005cf65
cmp byte [edi + 0x12], 0
jne 0x1005cf65
mov ecx, dword [esp + 0x14]
cmp word [ecx], 0x20
je 0x1005cf65
test eax, eax
je 0x1005cf65
mov eax, dword [edi + 0x24]
mov ecx, dword [esp + 0x10]
mov dword [ecx + edx*4], eax
mov eax, dword [esp + 0x1c]
movzx ecx, word [edi + 0xe]
inc eax
mov dword [esp + 0x1c], eax
mov edx, ecx
cmp eax, ecx
jb 0x1005cb55
mov edx, dword [esp + 0x7c]
mov eax, ecx
cmp dword [esp + 0x2c], 0
jne 0x1005cfdb
cmp dword [esp + 0x40], 0
je 0x1005cfdb
test edx, edx
je 0x1005cfdb
cmp ax, 1
jbe 0x1005cfdb
cmp dword [esp + 0x18], 0
je 0x1005cfae
cmp byte [edi + 0x12], 0
je 0x1005cfdb
test byte [esi + 0xa4], 2
je 0x1005cfca
cmp dword [esi + 0xa8], 8
jne 0x1005cfca
mov dword [esp + 0x5c], 1
jmp 0x1005cfdb
push dword [esp + 0x10]
push edi
push ecx
push dword [esp + 0x5c]
mov ecx, esi
call fcn.1005b6f0
test byte [esi + 0xa4], 3
je 0x1005d19b
mov ecx, dword [edi]
mov eax, dword [esi + ecx*4 + 0xd4]
mov esi, dword [esp + 0x58]
cdq
and edx, 3
imul ecx, ecx, 0x94
add eax, edx
sar eax, 2
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x20], eax
mov esi, dword [ecx + esi + 0x20]
mov dword [esp + 0x14], esi
test esi, esi
je 0x1005d2e1
mov ecx, dword [edi]
mov edx, dword [esp + 0xc]
mov ecx, dword [edx + ecx*4 + 0xf0]
mov dword [esp + 0x40], ecx
cmp ecx, 0x64
je 0x1005d073
cmp dword [esp + 0x18], 0
je 0x1005d040
cmp byte [edi + 0x12], 0
je 0x1005d073
imul dword [edi + 0x24]
mov esi, eax
mov ecx, edx
mov eax, dword [esp + 0x40]
cdq
push edx
push eax
push ecx
push esi
call fcn.100bfb80
mov esi, eax
mov ecx, edx
mov eax, dword [esp + 0x14]
mov edx, 0x64
imul edx
push edx
push eax
push ecx
push esi
call fcn.100bfad0
mov esi, dword [esp + 0x14]
jmp 0x1005d07f
push esi
push eax
push dword [edi + 0x24]
call dword [esp + 0x58]
add esp, 0xc
shl eax, 2
xor ecx, ecx
mov dword [edi + 0x24], eax
xor eax, eax
mov dword [esp + 0x34], ecx
cmp ax, word [edi + 0xe]
jae 0x1005d197
nop word [eax + eax]
mov eax, dword [esp + 0x50]
cmp word [eax + ecx*2], 0x20
jne 0x1005d0d3
mov edx, dword [esp + 0x58]
mov esi, dword [edx + 0xb4]
mov dword [esp + 0x14], esi
test esi, esi
jne 0x1005d0d3
imul eax, dword [edi], 0x94
mov esi, dword [eax + edx + 0x20]
mov dword [esp + 0x14], esi
test esi, esi
je 0x1005d2e1
mov eax, dword [edi]
mov edx, dword [esp + 0xc]
mov eax, dword [edx + eax*4 + 0xf0]
mov dword [esp + 0x40], eax
cmp eax, 0x64
je 0x1005d141
cmp dword [esp + 0x18], 0
je 0x1005d0f6
cmp byte [edi + 0x12], 0
je 0x1005d141
lea eax, [ecx*4]
mov ecx, dword [esp + 0x10]
add ecx, eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x38], ecx
imul dword [ecx]
mov esi, eax
mov ecx, edx
mov eax, dword [esp + 0x40]
cdq
push edx
push eax
push ecx
push esi
call fcn.100bfb80
mov esi, eax
mov ecx, edx
mov eax, dword [esp + 0x14]
mov edx, 0x64
imul edx
push edx
push eax
push ecx
push esi
call fcn.100bfad0
mov esi, dword [esp + 0x14]
jmp 0x1005d162
lea eax, [ecx*4]
mov dword [esp + 0x3c], eax
add eax, dword [esp + 0x10]
push esi
push dword [esp + 0x24]
mov dword [esp + 0x40], eax
push dword [eax]
call dword [esp + 0x58]
add esp, 0xc
mov edx, dword [esp + 0x10]
mov ecx, eax
mov eax, dword [esp + 0x3c]
mov dword [eax + edx], ecx
lea eax, [ecx*4]
mov ecx, dword [esp + 0x38]
mov dword [ecx], eax
mov ecx, dword [esp + 0x34]
movzx eax, word [edi + 0xe]
inc ecx
mov dword [esp + 0x34], ecx
cmp ecx, eax
jb 0x1005d0a0
mov esi, dword [esp + 0xc]
jmp 0x1005d19f
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
test byte [esi + 0xa4], 3
je 0x1005d226
cmp dword [esp + 0x18], 0
je 0x1005d1b5
cmp byte [edi + 0x12], 0
je 0x1005d226
cmp word [edi + 0xe], 0
je 0x1005d226
test byte [edi + 8], 8
jne 0x1005d226
cmp dword [esp + 0x2c], 0
jne 0x1005d226
imul eax, dword [edi], 0x94
mov ecx, dword [esp + 0x58]
push edx
push dword [esp + 0x60]
add ecx, 0x10
add eax, ecx
mov ecx, esi
push eax
push edi
push dword [esp + 0x60]
call fcn.1005c460
test eax, eax
je 0x1005d226
cmp dword [esp + 0x30], 0
je 0x1005d226
xor eax, eax
xor ecx, ecx
cmp ax, word [edi + 0xe]
jae 0x1005d226
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x30]
sub edx, esi
nop dword [eax]
mov eax, dword [edx + esi]
lea esi, [esi + 4]
mov dword [esi - 4], eax
inc ecx
movzx eax, word [edi + 0xe]
cmp ecx, eax
jl 0x1005d210
mov esi, dword [esp + 0xc]
xor ecx, ecx
cmp dword [esp + 0x18], ecx
jne 0x1005d25b
xor eax, eax
mov dword [edi + 0x1c], ecx
cmp ax, word [edi + 0xe]
jae 0x1005d253
mov esi, dword [esp + 0x10]
xor edx, edx
nop
add edx, dword [esi + ecx*4]
inc ecx
mov dword [edi + 0x1c], edx
movzx eax, word [edi + 0xe]
cmp ecx, eax
jb 0x1005d240
mov esi, dword [esp + 0xc]
mov eax, dword [edi + 0x24]
mov dword [edi + 0x20], eax
jmp 0x1005d2b9
mov dword [edi + 0x20], 0
cmp byte [edi + 0x12], 0
movzx edx, word [edi + 0xe]
jne 0x1005d292
mov eax, dword [esp + 0x28]
mov dword [edi + 0x1c], eax
xor eax, eax
cmp ax, dx
jae 0x1005d2b9
mov edx, dword [edi + 0x20]
mov esi, dword [esp + 0x10]
add edx, dword [esi + ecx*4]
inc ecx
mov dword [edi + 0x20], edx
movzx eax, word [edi + 0xe]
cmp ecx, eax
jb 0x1005d281
jmp 0x1005d2b5
mov eax, dword [edi + 0x24]
mov dword [edi + 0x1c], eax
xor eax, eax
cmp ax, dx
jae 0x1005d2b9
mov edx, dword [edi + 0x20]
mov esi, dword [esp + 0x10]
add edx, dword [esi + ecx*4]
inc ecx
mov dword [edi + 0x20], edx
movzx eax, word [edi + 0xe]
cmp ecx, eax
jb 0x1005d2a6
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x60]
mov ecx, esi
mov edx, dword [esp + 0x64]
push 0
push dword [esi + 0x88]
mov eax, dword [eax + 0xc]
add edx, eax
push 1
movzx eax, byte [edx + 0x12]
push eax
push dword [edx + 4]
push dword [edx]
call fcn.1005b100
mov ecx, dword [esp + 0xac]
pop edi
pop esi
xor ecx, esp
call fcn.100be194
mov esp, ebp
pop ebp
ret 0xc