Function at 0x5dd180
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x104
push esi
push edi
xor edi, edi
cmp dword [0xb16120], edi
mov esi, eax
jne 0x5de74c
call fcn.0057eec5
cmp eax, 1
jne 0x5dd1af
call fcn.0057dc1e
test eax, eax
je 0x5de74c
test esi, esi
push ebx
js 0x5dd20d
mov eax, esi
and eax, 0x78000000
cmp eax, 0x20000000
jne 0x5dd20d
mov eax, esi
and eax, 0xffff
cmp eax, 0x28
jge 0x5dd20d
mov ebx, dword [eax*4 + 0xb04cd0]
cmp ebx, edi
mov dword [esp + 0x28], ebx
je 0x5dd20d
mov ecx, dword [ebx]
shl ecx, 0x10
and esi, 0x7ff0000
cmp ecx, esi
jne 0x5dd20d
push edi
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov esi, eax
cmp esi, edi
mov dword [esp + 0x80], esi
jne 0x5dd219
push 0x882068
call fcn.0057f8d4
add esp, 4
pop ebx
pop edi
xor eax, eax
pop esi
add esp, 0x104
ret
mov edx, dword [ebx + 0x89f68]
push ebp
push edx
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
mov ebp, eax
cmp ebp, edi
mov dword [esp + 0xa0], ebp
jne 0x5dd256
push esi
call dword [sym.imp.GDI32.dll_DeleteDC]
push 0x882068
call fcn.0057f8d4
add esp, 4
pop ebp
pop ebx
pop edi
xor eax, eax
pop esi
add esp, 0x104
ret
lea eax, [esp + 0xdc]
push eax
push esi
call dword [sym.imp.GDI32.dll_GetTextMetricsA]
test byte [ebx + 0x89f6c], 1
je 0x5dd285
mov eax, dword [ebx + 0x89f74]
lea ecx, [eax + eax]
mov dword [esp + 0x74], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x68], ecx
jmp 0x5dd291
mov dword [esp + 0x74], edi
mov dword [esp + 0x6c], edi
mov dword [esp + 0x68], edi
cmp dword [esp + 0x118], edi
mov edx, dword [esp + 0x11c]
mov dword [esp + 0x78], edx
mov dword [esp + 0x8c], edi
jle 0x5de729
mov eax, dword [ebx + 0x89e3c]
lea eax, [eax + eax*4]
cmp byte [ebx + eax*4 + 8], 0
lea edi, [ebx + eax*4 + 8]
mov dword [esp + 0x80], edi
je 0x5dd2e1
mov ecx, dword [edi + 0x10]
mov dword [ecx], 0
mov edx, dword [edi + 0x10]
mov dword [edx + 4], 0
mov byte [edi], 0
mov eax, dword [esp + 0x78]
movzx ecx, word [eax]
mov eax, dword [edi + 8]
lea edx, [ebx + ecx*8 + 0x9e3c]
mov ecx, dword [ebx + 0x89f80]
mov dword [esp + 0xb8], edx
cdq
idiv ecx
mov ecx, dword [ebx + 0x89f64]
mov esi, ecx
mov ebp, ecx
imul esi, eax
imul ebp, edx
mov eax, dword [ebx + 0x8a3cc]
cmp eax, 1
mov dword [esp + 0x44], esi
mov dword [esp + 0x50], ebp
jne 0x5dd332
add esi, eax
add ebp, 1
mov dword [esp + 0x44], esi
mov dword [esp + 0x50], ebp
test eax, eax
jne 0x5dd359
mov eax, dword [ebx + 0x89e48]
mov edx, eax
imul eax, ebp
add eax, dword [ebx + 0x89e44]
imul edx, ecx
push edx
xor esi, esi
push esi
push eax
call fcn.0057f8f2
add esp, 0xc
jmp 0x5dd398
push ecx
push ecx
push ebp
lea eax, [ebx + 0x89f90]
push esi
push eax
call fcn.0057b194
add esp, 0x14
test byte [ebx + 0x89f6c], 1
je 0x5dd396
mov eax, dword [ebx + 0x89f64]
push eax
push eax
mov eax, dword [ebx + 0x89f78]
add eax, esi
push ebp
push eax
lea eax, [ebx + 0x89f90]
push eax
call fcn.0057b194
add esp, 0x14
xor esi, esi
mov eax, dword [ebx + 0x89f6c]
cmp eax, 3
ja case.default.0x5dd3a3
jmp dword [eax*4 + 0x5de758]
mov edx, 1
mov dword [esp + 0x70], edx
jmp 0x5dd3c2
mov dword [esp + 0x70], 5
mov edx, 1
mov ecx, dword [esp + 0x78]
mov al, byte [ecx]
cmp al, 0x20
mov word [esp + 0x90], si
mov word [esp + 0x92], dx
mov word [esp + 0x94], si
mov word [esp + 0x96], si
mov word [esp + 0x98], si
mov word [esp + 0x9a], si
mov word [esp + 0x9c], si
mov word [esp + 0x9e], dx
je 0x5dd41c
xor edx, edx
cmp word [ecx], 0x4081
setne dl
sub edx, 1
and edx, 2
mov cl, byte [ecx + 1]
test cl, cl
mov dword [esp + 0x14], edx
mov dword [esp + 0x24], esi
je 0x5dd435
mov byte [esp + 0x25], al
mov byte [esp + 0x24], cl
jmp 0x5dd43e
mov byte [esp + 0x24], al
mov byte [esp + 0x25], 0
push 0x14
lea eax, [esp + 0xa8]
push 0
push eax
call fcn.0057f8f2
mov eax, dword [esp + 0x7c]
add esp, 0xc
lea ecx, [esp + 0x90]
push ecx
mov ecx, dword [esp + 0x28]
push 0
push 0
lea edx, [esp + 0xb0]
push edx
mov edx, dword [esp + 0x94]
push eax
push ecx
push edx
call dword [sym.imp.GDI32.dll_GetGlyphOutlineA]
mov esi, eax
cmp esi, 0xffffffff
jne 0x5dd497
push str.GetGlyphOutline
call fcn.0057a587
add esp, 4
jmp 0x5de6ec
xor ecx, ecx
cmp dword [esp + 0x14], ecx
je 0x5dd4b8
mov ax, word [esp + 0xb4]
mov word [edi + 6], ax
mov word [edi + 0xc], cx
mov word [edi + 0xe], cx
jmp 0x5de6a7
xor edx, edx
mov eax, esi
div dword [esp + 0xa8]
shr eax, 2
add eax, eax
add eax, eax
cmp esi, ecx
mov dword [esp + 0x3c], eax
jne 0x5dd4d4
xor esi, esi
mov ecx, dword [esp + 0x3c]
push 0x45b
lea eax, [esi + ecx*2]
push str...DxLibDxFont.cpp
push eax
call fcn.0057eff1
add esp, 0xc
test eax, eax
mov dword [esp + 0x60], eax
je 0x5de71f
mov edx, dword [esp + 0x3c]
lea eax, [esi + edx*2]
push eax
mov eax, dword [esp + 0x64]
push 0
push eax
call fcn.0057f8f2
mov eax, dword [esp + 0x6c]
add eax, dword [esp + 0x48]
add esp, 0xc
lea ecx, [esp + 0x90]
push ecx
mov ecx, dword [esp + 0x28]
push eax
push esi
lea edx, [esp + 0xb0]
push edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x80]
push eax
push ecx
push edx
call dword [sym.imp.GDI32.dll_GetGlyphOutlineA]
cmp eax, 0xffffffff
jne 0x5dd561
push str.GetGlyphOutline
call fcn.0057a587
add esp, 4
jmp 0x5de6ec
mov ax, word [esp + 0xac]
mov esi, dword [esp + 0xa8]
mov dx, word [esp + 0xb4]
mov word [edi + 2], ax
mov ecx, dword [esp + 0xe0]
sub ecx, dword [esp + 0xb0]
mov eax, dword [esp + 0xa4]
mov word [edi + 4], cx
mov word [edi + 0xc], ax
mov word [edi + 0xe], si
mov word [edi + 6], dx
mov edx, dword [ebx + 0x89f6c]
test dl, 1
movsx eax, ax
movsx ecx, si
jne 0x5dd7d7
cmp dword [ebx + 0x8a3cc], 0
mov edi, dword [esp + 0x60]
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x38], edi
jne 0x5dd66d
mov esi, dword [ebx + 0x89e48]
mov dword [esp + 0x28], esi
imul esi, ebp
add esi, dword [ebx + 0x89e44]
mov eax, edx
sub eax, 0
je 0x5dd63a
sub eax, 2
jne 0x5de68f
test ecx, ecx
jle 0x5de68f
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x24], 0
jle 0x5dd626
mov edx, dword [esp + 0x24]
mov ebp, esi
mov ecx, edi
sub ebp, edi
mov al, byte [ecx]
test al, al
je 0x5dd61e
sub al, 1
mov byte [ecx + ebp], al
add ecx, 1
sub edx, 1
jne 0x5dd613
add edi, dword [esp + 0x3c]
add esi, dword [esp + 0x28]
sub dword [esp + 0x14], 1
jne 0x5dd602
jmp 0x5de68f
test ecx, ecx
jle 0x5de68f
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x14], ecx
lea ebx, [ebx]
push ebp
push edi
push esi
call fcn.0057bde2
add esi, dword [esp + 0x34]
add esp, 0xc
add edi, ebp
sub dword [esp + 0x14], 1
jne 0x5dd650
jmp 0x5de68f
mov ecx, dword [ebx + 0x8a3c0]
movzx eax, word [ebx + 0x89f92]
imul eax, dword [esp + 0x44]
lea edi, [ebx + 0x89f90]
mov dword [esp + 0x28], ecx
imul ecx, ebp
mov ebp, dword [edi + 0x14]
or ebp, dword [edi + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x70]
add eax, dword [edi + 0x434]
or ebp, dword [edi + 0xc]
sub ecx, 1
je 0x5dd71f
sub ecx, 4
jne 0x5dd780
mov ecx, dword [esp + 0x14]
test ecx, ecx
jle 0x5dd780
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x24]
xor esi, esi
test ecx, ecx
jle 0x5dd70a
lea esp, [esp]
mov edx, dword [esp + 0x38]
mov dl, byte [esi + edx]
test dl, dl
je 0x5dd6ff
movzx ecx, byte [edi + 0xb]
movzx ebx, byte [edi + 7]
movzx dx, dl
lea ecx, [ecx + ebx - 4]
shl dx, cl
mov ecx, dword [esp + 0x24]
sub dx, 1
or dx, bp
mov word [eax + esi*2], dx
jmp 0x5dd703
mov word [eax + esi*2], bp
add esi, 1
cmp esi, ecx
jl 0x5dd6d0
mov edx, dword [esp + 0x3c]
add dword [esp + 0x38], edx
add eax, dword [esp + 0x28]
sub dword [esp + 0x14], 1
jne 0x5dd6c3
jmp 0x5dd780
mov ecx, dword [esp + 0x14]
test ecx, ecx
jle 0x5dd780
mov esi, ecx
lea esp, [esp]
xor edx, edx
cmp dword [esp + 0x24], edx
jle 0x5dd76f
test dl, 7
jne 0x5dd74b
mov ebx, dword [esp + 0x38]
mov ecx, edx
sar ecx, 3
mov bl, byte [ecx + ebx]
jmp 0x5dd74f
mov bl, byte [esp + 0x67]
test bl, bl
jns 0x5dd758
mov ecx, dword [edi + 0x18]
jmp 0x5dd75a
xor ecx, ecx
or ecx, ebp
mov word [eax + edx*2], cx
add edx, 1
add bl, bl
cmp edx, dword [esp + 0x24]
mov byte [esp + 0x67], bl
jl 0x5dd738
mov edx, dword [esp + 0x3c]
add dword [esp + 0x38], edx
add eax, dword [esp + 0x28]
sub esi, 1
jne 0x5dd730
mov ebp, dword [esp + 0x2c]
mov eax, dword [ebp + 0x89f64]
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x44]
lea ecx, [eax + ebx]
push ecx
add eax, esi
push eax
push ebx
push esi
lea edx, [esp + 0xdc]
push edx
call dword [sym.imp.USER32.dll_SetRect]
mov eax, dword [ebp + 0x89f84]
push 0
push eax
push ebx
push esi
lea ecx, [esp + 0xdc]
push ecx
push 0
push edi
push 0
push 0
push 0
push 0
push edi
call fcn.0057ed58
add esp, 0x30
mov ebx, ebp
jmp 0x5de68f
mov esi, dword [ebx + 0x89f74]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x1c], eax
mov eax, esi
imul eax, eax, 0x51
cmp dword [ebx + 0x8a3cc], 0
lea eax, [eax + 0x8c0257]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x48], esi
mov dword [esp + 0x7c], eax
jne 0x5dddfc
sub edx, 1
mov edi, dword [ebx + 0x89e48]
mov dword [esp + 0x20], edi
je 0x5ddb63
sub edx, 2
jne 0x5de68f
mov edx, dword [esp + 0x74]
add ebp, edx
imul ebp, edi
add ebp, dword [ebx + 0x89e44]
add ebp, dword [esp + 0x44]
add ebp, dword [esp + 0x6c]
cmp esi, 1
jne 0x5dd923
test ecx, ecx
jle 0x5de68f
mov dword [esp + 0x14], ecx
jmp 0x5dd860
xor ecx, ecx
cmp dword [esp + 0x30], ecx
jle 0x5dd905
mov eax, ebp
sub eax, edi
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x1c]
mov al, byte [ecx + eax]
test al, al
je 0x5dd8f8
mov edx, dword [esp + 0x34]
movzx eax, al
sub eax, 1
lea esi, [ecx + edx]
or byte [edi + esi], al
mov dl, byte [esi]
movzx ebx, dl
shl eax, 4
and ebx, 0xf0
cmp ebx, eax
jge 0x5dd8a8
and dl, 0xf
or dl, al
mov byte [esi], dl
lea edx, [ecx + ebp]
lea esi, [edx + edi]
mov dl, byte [esi]
movzx ebx, dl
and ebx, 0xf0
cmp ebx, eax
jge 0x5dd8c4
and dl, 0xf
or dl, al
mov byte [esi], dl
mov dl, byte [ecx + ebp + 1]
movzx ebx, dl
and ebx, 0xf0
cmp ebx, eax
jge 0x5dd8de
and dl, 0xf
or dl, al
mov byte [ecx + ebp + 1], dl
mov dl, byte [ecx + ebp - 1]
movzx ebx, dl
and ebx, 0xf0
cmp ebx, eax
jge 0x5dd8f8
and dl, 0xf
or dl, al
mov byte [ecx + ebp - 1], dl
add ecx, 1
cmp ecx, dword [esp + 0x30]
jl 0x5dd874
mov eax, dword [esp + 0x3c]
add dword [esp + 0x1c], eax
add ebp, edi
sub dword [esp + 0x14], 1
jne 0x5dd860
mov ebx, dword [esp + 0x2c]
jmp 0x5de68f
cmp esi, 4
jg 0x5dda60
test ecx, ecx
jle 0x5de68f
mov dword [esp + 0x4c], ecx
jmp 0x5dd940
cmp dword [esp + 0x30], 0
mov dword [esp + 0x40], 0
jle 0x5dda40
mov eax, dword [esp + 0x1c]
sub eax, ebp
mov dword [esp + 0x24], ebp
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x24]
mov al, byte [ecx + edx]
test al, al
je 0x5dda26
mov ecx, dword [esp + 0x48]
movzx edx, al
mov eax, dword [esp + 0x24]
sub edx, 1
or byte [eax], dl
mov eax, ecx
neg eax
shl edx, 4
add ecx, 1
cmp eax, ecx
mov dword [esp + 0x44], edx
mov dword [esp + 0x14], eax
jge 0x5dda26
mov esi, eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x48]
add eax, 1
mov edi, esi
imul edi, dword [esp + 0x20]
mov ecx, eax
sub ecx, esi
mov dword [esp + 0x28], ecx
mov edi, edi
cmp esi, eax
jge 0x5dda16
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x50], ecx
lea esp, [esp]
mov eax, dword [esp + 0x50]
cmp byte [eax], 0
je 0x5dd9ff
mov ecx, dword [esp + 0x40]
lea eax, [esi + ecx]
add eax, ebp
mov cl, byte [eax + edi]
add eax, edi
movzx ebx, cl
and ebx, 0xf0
cmp ebx, edx
mov edx, dword [esp + 0x44]
jge 0x5dd9ff
and cl, 0xf
or cl, dl
mov byte [eax], cl
mov eax, dword [esp + 0x48]
add dword [esp + 0x50], 1
add esi, 1
add eax, 1
cmp esi, eax
jl 0x5dd9d0
mov esi, dword [esp + 0x14]
add dword [esp + 0x58], 9
add edi, dword [esp + 0x20]
sub dword [esp + 0x28], 1
jne 0x5dd9c0
mov eax, dword [esp + 0x40]
add dword [esp + 0x24], 1
add eax, 1
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x40], eax
jl 0x5dd961
mov edx, dword [esp + 0x3c]
add dword [esp + 0x1c], edx
add ebp, dword [esp + 0x20]
sub dword [esp + 0x4c], 1
jne 0x5dd940
mov ebx, dword [esp + 0x2c]
jmp 0x5de68f
test ecx, ecx
jle 0x5de68f
mov dword [esp + 0x4c], ecx
lea esp, [esp]
cmp dword [esp + 0x30], 0
mov dword [esp + 0x40], 0
jle 0x5ddb43
mov eax, dword [esp + 0x1c]
sub eax, ebp
mov dword [esp + 0x24], ebp
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x38]
mov al, byte [eax + ecx]
test al, al
je 0x5ddb29
mov ebx, dword [esp + 0x48]
movzx edx, al
mov eax, dword [esp + 0x24]
sub edx, 1
or byte [eax], dl
mov edi, ebx
shl edx, 4
neg edi
lea ecx, [ebx + 1]
cmp edi, ecx
mov dword [esp + 0x44], edx
jge 0x5ddb29
mov eax, edi
imul eax, dword [esp + 0x20]
sub ecx, edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], ecx
lea esi, [ebx + 1]
cmp edi, esi
jge 0x5ddb1a
add eax, edi
add eax, dword [esp + 0x40]
add eax, ebp
sub esi, edi
jmp 0x5ddaf0
mov cl, byte [eax]
movzx ebx, cl
and ebx, 0xf0
cmp ebx, edx
mov edx, dword [esp + 0x44]
jge 0x5ddb0a
and cl, 0xf
or cl, dl
mov byte [eax], cl
add eax, 1
sub esi, 1
jne 0x5ddaf0
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x48]
add eax, dword [esp + 0x20]
sub dword [esp + 0x28], 1
mov dword [esp + 0x14], eax
jne 0x5ddad7
mov eax, dword [esp + 0x40]
add dword [esp + 0x24], 1
add eax, 1
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x40], eax
jl 0x5dda91
mov edx, dword [esp + 0x3c]
add dword [esp + 0x1c], edx
add ebp, dword [esp + 0x20]
sub dword [esp + 0x4c], 1
jne 0x5dda70
mov ebx, dword [esp + 0x2c]
jmp 0x5de68f
mov eax, dword [esp + 0x74]
add eax, ebp
imul eax, edi
add eax, dword [ebx + 0x89e44]
add eax, dword [esp + 0x44]
add eax, dword [esp + 0x6c]
cmp esi, 1
mov dword [esp + 0x44], eax
jne 0x5ddc3e
test ecx, ecx
jle 0x5de68f
mov ebp, dword [esp + 0x30]
lea edx, [eax + 1]
mov dword [esp + 0x50], edx
mov edx, edi
neg edx
or esi, 0xffffffff
mov dword [esp + 0x34], edx
sub esi, eax
mov dword [esp + 0x14], ecx
jmp 0x5ddbb0
test ebp, ebp
jle 0x5ddc20
mov eax, dword [esp + 0x50]
or edx, 0xffffffff
sub edx, edi
lea ecx, [ecx]
lea ecx, [esi + eax]
test cl, 7
jne 0x5ddbd8
mov ebp, dword [esp + 0x1c]
shr ecx, 3
mov cl, byte [ecx + ebp]
mov ebp, dword [esp + 0x30]
jmp 0x5ddbdc
mov cl, byte [esp + 0x1b]
test cl, cl
jns 0x5ddc0c
cmp byte [eax - 2], 1
mov byte [eax - 1], 1
je 0x5ddbee
mov byte [eax - 2], 2
cmp byte [eax], 1
je 0x5ddbf6
mov byte [eax], 2
cmp byte [edx + eax], 1
je 0x5ddc00
mov byte [edx + eax], 2
cmp byte [edi + eax - 1], 1
je 0x5ddc0c
mov byte [edi + eax - 1], 2
add cl, cl
add eax, 1
mov byte [esp + 0x1b], cl
lea ecx, [esi + eax]
cmp ecx, ebp
jl 0x5ddbc0
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
add dword [esp + 0x1c], eax
add dword [esp + 0x50], edi
add esi, edx
sub dword [esp + 0x14], 1
jne 0x5ddbb0
jmp 0x5de68f
cmp esi, 4
jg 0x5ddd31
test ecx, ecx
jle 0x5de68f
mov dword [esp + 0x4c], ecx
xor esi, esi
cmp dword [esp + 0x30], esi
jle 0x5ddd0d
nop
mov ecx, esi
and ecx, 0x80000007
jns 0x5ddc6f
dec ecx
or ecx, 0xfffffff8
inc ecx
jne 0x5ddc87
mov eax, esi
cdq
and edx, 7
add eax, edx
mov edx, dword [esp + 0x1c]
sar eax, 3
mov al, byte [eax + edx]
mov byte [esp + 0x1b], al
test byte [esp + 0x1b], 0x80
je 0x5ddcfc
mov ebp, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
mov edi, ebp
neg edi
add ebp, 1
cmp edi, ebp
mov byte [esi + ecx], 1
jge 0x5ddcfc
mov ebx, dword [esp + 0x7c]
mov edx, edi
imul edx, dword [esp + 0x20]
mov eax, ebp
sub eax, edi
mov dword [esp + 0x14], ebx
mov dword [esp + 0x28], eax
lea esp, [esp]
mov ecx, edi
cmp ecx, ebp
jge 0x5ddce6
cmp byte [ebx], 0
je 0x5ddcdc
lea eax, [edx + ecx]
add eax, esi
add eax, dword [esp + 0x44]
cmp byte [eax], 1
je 0x5ddcdc
mov byte [eax], 2
add ecx, 1
add ebx, 1
cmp ecx, ebp
jl 0x5ddcc6
mov ebx, dword [esp + 0x14]
add edx, dword [esp + 0x20]
add ebx, 9
sub dword [esp + 0x28], 1
mov dword [esp + 0x14], ebx
jne 0x5ddcc0
shl byte [esp + 0x1b], 1
add esi, 1
cmp esi, dword [esp + 0x30]
jl 0x5ddc60
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
add dword [esp + 0x1c], edx
add dword [esp + 0x44], eax
sub dword [esp + 0x4c], 1
jne 0x5ddc53
mov ebx, dword [esp + 0x2c]
jmp 0x5de68f
test ecx, ecx
jle 0x5de68f
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x28], ecx
xor ebp, ebp
cmp dword [esp + 0x30], ebp
jle 0x5ddddc
lea ecx, [ecx]
mov ecx, ebp
and ecx, 0x80000007
jns 0x5ddd5f
dec ecx
or ecx, 0xfffffff8
inc ecx
jne 0x5ddd77
mov eax, ebp
cdq
and edx, 7
add eax, edx
mov edx, dword [esp + 0x1c]
sar eax, 3
mov al, byte [eax + edx]
mov byte [esp + 0x1b], al
test byte [esp + 0x1b], 0x80
je 0x5dddcb
mov edi, dword [esp + 0x48]
mov edx, edi
neg edx
add edi, 1
cmp edx, edi
mov byte [ebx + ebp], 1
jge 0x5dddcb
mov esi, edx
imul esi, dword [esp + 0x20]
mov eax, edi
sub eax, edx
mov dword [esp + 0x14], eax
cmp edx, edi
jge 0x5dddc0
lea eax, [esi + edx]
add eax, ebp
mov ecx, edi
add eax, ebx
sub ecx, edx
nop
cmp byte [eax], 1
je 0x5dddb8
mov byte [eax], 2
add eax, 1
sub ecx, 1
jne 0x5dddb0
add esi, dword [esp + 0x20]
sub dword [esp + 0x14], 1
jne 0x5ddda0
shl byte [esp + 0x1b], 1
add ebp, 1
cmp ebp, dword [esp + 0x30]
jl 0x5ddd50
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x1c], ecx
add ebx, dword [esp + 0x20]
sub dword [esp + 0x28], 1
jne 0x5ddd41
mov ebx, dword [esp + 0x2c]
jmp 0x5de68f
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x50]
mov esi, dword [ecx + 0x8a3c0]
add edx, eax
movzx eax, word [ecx + 0x89f92]
imul edx, esi
imul eax, dword [esp + 0x44]
add ecx, 0x89f90
mov ebp, dword [ecx + 0x14]
or ebp, dword [ecx + 0x10]
add edx, eax
add edx, dword [ecx + 0x434]
mov eax, dword [esp + 0x6c]
or ebp, dword [ecx + 0xc]
lea ebx, [edx + eax*2]
mov eax, dword [ecx + 0x428]
mov ecx, dword [esp + 0x60]
cdq
sub eax, edx
mov edx, eax
mov eax, dword [esp + 0x70]
sar edx, 1
sub eax, 1
mov dword [esp + 0x20], esi
mov dword [esp + 0x88], ebx
mov dword [esp + 0x24], edx
mov dword [esp + 0x58], ebp
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x54], ebx
je 0x5de272
sub eax, 4
jne 0x5de5eb
mov eax, dword [esp + 0x48]
cmp eax, 1
jne 0x5ddf8d
cmp dword [esp + 0x38], 0
jle 0x5de198
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], edx
xor esi, esi
test ecx, ecx
jle 0x5ddf71
mov eax, dword [esp + 0x24]
mov edi, 2
sub edi, dword [esp + 0x20]
lea eax, [ebx + eax*2 + 2]
mov dword [esp + 0x14], edi
mov edx, dword [esp + 0x1c]
movzx edx, byte [edx + esi]
test edx, edx
jbe 0x5ddf63
mov word [ebx + esi*2], dx
mov ecx, 0x10
sub ecx, edx
movzx edx, word [eax + edi - 4]
mov edi, 0x10
sub edi, edx
imul edi, ecx
mov edx, 0x100
sub edx, edi
mov edi, dword [esp + 0x14]
shr edx, 4
mov word [eax + edi - 4], dx
mov edx, dword [esp + 0x20]
movzx edx, word [edx + eax - 2]
mov edi, 0x10
sub edi, edx
imul edi, ecx
mov edx, 0x100
sub edx, edi
mov edi, dword [esp + 0x20]
shr edx, 4
mov word [edi + eax - 2], dx
movzx edx, word [eax - 4]
mov edi, 0x10
sub edi, edx
imul edi, ecx
mov edx, 0x100
sub edx, edi
shr edx, 4
mov word [eax - 4], dx
movzx edx, word [eax]
mov edi, 0x10
sub edi, edx
imul edi, ecx
mov ecx, 0x100
sub ecx, edi
mov edi, dword [esp + 0x14]
shr ecx, 4
mov word [eax], cx
mov ecx, dword [esp + 0x30]
add esi, 1
add eax, 2
cmp esi, ecx
jl 0x5ddec2
mov edx, dword [esp + 0x3c]
add dword [esp + 0x1c], edx
add ebx, dword [esp + 0x20]
sub dword [esp + 0x28], 1
jne 0x5ddea3
jmp 0x5de198
cmp eax, 4
jg 0x5de0ac
cmp dword [esp + 0x38], 0
jle 0x5de198
mov eax, dword [esp + 0x38]
mov dword [esp + 0x34], eax
lea esp, [esp]
xor eax, eax
cmp dword [esp + 0x30], eax
mov dword [esp + 0x40], eax
jle 0x5de08c
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [ecx + eax]
test ecx, ecx
mov dword [esp + 0x14], ecx
jbe 0x5de07b
mov word [ebx + eax*2], cx
mov ecx, dword [esp + 0x48]
mov edi, ecx
neg edi
add ecx, 1
cmp edi, ecx
jge 0x5de07b
mov edx, dword [esp + 0x7c]
mov esi, edi
imul esi, dword [esp + 0x20]
sub ecx, edi
mov dword [esp + 0x28], edx
mov dword [esp + 0x5c], ecx
mov edx, dword [esp + 0x48]
add edx, 1
cmp edi, edx
jge 0x5de06b
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x24]
add ecx, edi
add ecx, eax
add ecx, ecx
sub edx, edi
nop
mov eax, dword [esp + 0x4c]
cmp byte [eax], 0
je 0x5de05a
lea eax, [ecx + ebx]
movzx ebx, word [eax + esi]
add eax, esi
mov ebp, 0x10
sub ebp, ebx
mov ebx, 0x10
sub ebx, dword [esp + 0x14]
imul ebp, ebx
mov ebx, 0x100
sub ebx, ebp
mov ebp, dword [esp + 0x58]
shr ebx, 4
mov word [eax], bx
mov ebx, dword [esp + 0x54]
add dword [esp + 0x4c], 1
add ecx, 2
sub edx, 1
jne 0x5de020
mov eax, dword [esp + 0x40]
add dword [esp + 0x28], 9
add esi, dword [esp + 0x20]
sub dword [esp + 0x5c], 1
jne 0x5de000
add eax, 1
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x40], eax
jl 0x5ddfc0
mov ecx, dword [esp + 0x3c]
add ebx, dword [esp + 0x20]
add dword [esp + 0x1c], ecx
sub dword [esp + 0x34], 1
mov dword [esp + 0x54], ebx
jne 0x5ddfb0
jmp 0x5de198
cmp dword [esp + 0x38], 0
jle 0x5de198
mov edx, dword [esp + 0x38]
mov dword [esp + 0x5c], edx
nop
xor edi, edi
cmp dword [esp + 0x30], edi
mov dword [esp + 0x40], edi
jle 0x5de181
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + edi]
test eax, eax
mov dword [esp + 0x14], eax
jbe 0x5de170
mov word [ebx + edi*2], ax
mov eax, dword [esp + 0x48]
mov esi, eax
neg esi
lea ecx, [eax + 1]
cmp esi, ecx
jge 0x5de170
mov eax, esi
imul eax, dword [esp + 0x20]
sub ecx, esi
mov dword [esp + 0x34], eax
mov dword [esp + 0x54], ecx
jmp 0x5de110
mov ecx, dword [esp + 0x48]
add ecx, 1
cmp esi, ecx
jge 0x5de161
mov ebp, dword [esp + 0x24]
add ebp, esi
add ebp, edi
mov edx, 0x10
sub edx, dword [esp + 0x14]
lea eax, [eax + ebp*2]
add eax, ebx
sub ecx, esi
movzx edi, word [eax]
mov ebp, 0x10
sub ebp, edi
imul ebp, edx
mov edi, 0x100
sub edi, ebp
shr edi, 4
mov word [eax], di
add eax, 2
sub ecx, 1
jne 0x5de133
mov ebp, dword [esp + 0x58]
mov edi, dword [esp + 0x40]
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x20]
sub dword [esp + 0x54], 1
mov dword [esp + 0x34], eax
jne 0x5de110
add edi, 1
cmp edi, dword [esp + 0x30]
mov dword [esp + 0x40], edi
jl 0x5de0d0
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x1c], ecx
add ebx, dword [esp + 0x20]
sub dword [esp + 0x5c], 1
jne 0x5de0c0
mov edx, dword [esp + 0x20]
imul edx, dword [esp + 0x74]
mov edi, dword [esp + 0x6c]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x68]
neg edi
add edi, edi
sub edi, edx
add edi, dword [esp + 0x88]
add eax, ecx
test eax, eax
jle 0x5de5eb
mov edx, dword [esp + 0x30]
lea ebx, [edx + ecx]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x88], ebx
mov dword [esp + 0x34], eax
lea ebx, [ebx]
xor esi, esi
test ebx, ebx
jle 0x5de25e
mov edx, dword [esp + 0x24]
lea edx, [edi + edx*2]
lea ecx, [ecx]
movzx eax, word [edi + esi*2]
test ax, ax
je 0x5de21c
movzx ebx, byte [ecx + 0x89f9b]
movzx ecx, byte [ecx + 0x89f97]
lea ecx, [ebx + ecx - 4]
shl eax, cl
mov ecx, dword [esp + 0x2c]
sub eax, 1
or eax, ebp
mov word [edi + esi*2], ax
jmp 0x5de220
mov word [edi + esi*2], bp
movzx eax, word [edx]
test ax, ax
je 0x5de24a
movzx ebx, byte [ecx + 0x89f9b]
movzx ecx, byte [ecx + 0x89f97]
lea ecx, [ebx + ecx - 4]
shl eax, cl
mov ecx, dword [esp + 0x2c]
sub eax, 1
or eax, ebp
mov word [edx], ax
jmp 0x5de24d
mov word [edx], bp
mov ebx, dword [esp + 0x88]
add esi, 1
add edx, 2
cmp esi, ebx
jl 0x5de1f0
add edi, dword [esp + 0x20]
sub dword [esp + 0x34], 1
jne 0x5de1e0
jmp 0x5de5eb
mov edi, dword [esp + 0x48]
cmp edi, 1
mov eax, dword [esp + 0x38]
jne 0x5de38f
test eax, eax
jle 0x5de5eb
mov dword [esp + 0x34], eax
nop
xor ecx, ecx
cmp dword [esp + 0x30], ecx
jle 0x5de375
mov edi, 2
lea eax, [ebx + edx*2 + 2]
sub edi, esi
test cl, 7
jne 0x5de2bc
mov esi, dword [esp + 0x1c]
mov edx, ecx
sar edx, 3
mov dl, byte [edx + esi]
mov byte [esp + 0x13], dl
test byte [esp + 0x13], 0x80
je 0x5de359
mov edx, dword [esp + 0x2c]
mov si, word [edx + 0x89fa8]
or si, bp
mov word [ebx + ecx*2], si
movzx esi, word [edi + eax - 4]
test dword [edx + 0x89fa8], esi
jne 0x5de2f5
mov dx, word [edx + 0x89fa8]
or dx, bp
mov word [edi + eax - 4], dx
mov edx, dword [esp + 0x20]
movzx edx, word [edx + eax - 2]
mov esi, dword [esp + 0x2c]
test dword [esi + 0x89fa8], edx
jne 0x5de31f
mov edx, esi
mov dx, word [edx + 0x89fa8]
mov esi, dword [esp + 0x20]
or dx, bp
mov word [esi + eax - 2], dx
movzx edx, word [eax - 4]
mov esi, dword [esp + 0x2c]
test dword [esi + 0x89fa8], edx
jne 0x5de33f
mov edx, esi
mov dx, word [edx + 0x89fa8]
or dx, bp
mov word [eax - 4], dx
movzx edx, word [eax]
test dword [esi + 0x89fa8], edx
jne 0x5de359
mov edx, esi
mov dx, word [edx + 0x89fa8]
or dx, bp
mov word [eax], dx
shl byte [esp + 0x13], 1
add ecx, 1
add eax, 2
cmp ecx, dword [esp + 0x30]
jl 0x5de2a7
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x3c]
add dword [esp + 0x1c], eax
add ebx, esi
sub dword [esp + 0x34], 1
jne 0x5de290
jmp 0x5de5eb
cmp edi, 4
jg 0x5de4dc
test eax, eax
jle 0x5de5eb
mov dword [esp + 0x54], eax
xor ecx, ecx
cmp dword [esp + 0x30], ecx
mov dword [esp + 0x40], ecx
jle 0x5de4c0
mov edx, ecx
and edx, 0x80000007
jns 0x5de3c3
dec edx
or edx, 0xfffffff8
inc edx
jne 0x5de3db
mov eax, ecx
cdq
and edx, 7
add eax, edx
mov edx, dword [esp + 0x1c]
sar eax, 3
mov al, byte [eax + edx]
mov byte [esp + 0x13], al
test byte [esp + 0x13], 0x80
je 0x5de4ab
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x48]
mov dx, word [eax + 0x89fa8]
add eax, 0x89f90
mov esi, edi
or dx, bp
neg esi
lea eax, [edi + 1]
cmp esi, eax
mov word [ebx + ecx*2], dx
jge 0x5de4ab
mov edx, esi
imul edx, dword [esp + 0x20]
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x7c]
sub eax, esi
mov dword [esp + 0x28], edx
mov dword [esp + 0x34], eax
lea esp, [esp]
lea edx, [edi + 1]
cmp esi, edx
jge 0x5de497
mov eax, dword [esp + 0x28]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
add eax, esi
add eax, ecx
add eax, eax
sub edx, esi
jmp 0x5de450
mov ecx, dword [esp + 0x14]
cmp byte [ecx], 0
je 0x5de482
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x2c]
add ecx, ebx
movzx ebp, word [ecx + eax]
add ecx, eax
add edi, 0x89f90
test dword [edi + 0x18], ebp
mov ebp, dword [esp + 0x58]
jne 0x5de482
mov di, word [edi + 0x18]
or di, bp
mov word [ecx], di
add dword [esp + 0x14], 1
add eax, 2
sub edx, 1
jne 0x5de450
mov edi, dword [esp + 0x48]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x20]
add dword [esp + 0x28], 9
add dword [esp + 0x4c], edx
sub dword [esp + 0x34], 1
jne 0x5de430
shl byte [esp + 0x13], 1
add ecx, 1
cmp ecx, dword [esp + 0x30]
mov dword [esp + 0x40], ecx
jl 0x5de3b4
mov eax, dword [esp + 0x3c]
add dword [esp + 0x1c], eax
add ebx, dword [esp + 0x20]
sub dword [esp + 0x54], 1
jne 0x5de3a4
jmp 0x5de5eb
test eax, eax
jle 0x5de5eb
mov dword [esp + 0x5c], eax
jmp 0x5de4f0
xor esi, esi
cmp dword [esp + 0x30], esi
mov dword [esp + 0x40], esi
jle 0x5de5d4
mov ecx, esi
and ecx, 0x80000007
jns 0x5de50f
dec ecx
or ecx, 0xfffffff8
inc ecx
jne 0x5de527
mov eax, esi
cdq
and edx, 7
add eax, edx
mov edx, dword [esp + 0x1c]
sar eax, 3
mov al, byte [eax + edx]
mov byte [esp + 0x13], al
test byte [esp + 0x13], 0x80
je 0x5de5bf
mov eax, dword [esp + 0x2c]
mov cx, word [eax + 0x89fa8]
add eax, 0x89f90
or cx, bp
mov edx, edi
mov word [ebx + esi*2], cx
neg edx
lea ecx, [edi + 1]
cmp edx, ecx
jge 0x5de5bf
mov eax, edx
imul eax, dword [esp + 0x20]
sub ecx, edx
mov dword [esp + 0x34], eax
mov dword [esp + 0x54], ecx
lea ecx, [edi + 1]
cmp edx, ecx
jge 0x5de5b0
mov edi, dword [esp + 0x24]
add edi, edx
add edi, esi
lea eax, [eax + edi*2]
add eax, ebx
sub ecx, edx
jmp 0x5de580
movzx edi, word [eax]
mov esi, dword [esp + 0x2c]
add esi, 0x89f90
test dword [esi + 0x18], edi
jne 0x5de59c
mov si, word [esi + 0x18]
or si, bp
mov word [eax], si
add eax, 2
sub ecx, 1
jne 0x5de580
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x40]
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x20]
sub dword [esp + 0x54], 1
mov dword [esp + 0x34], eax
jne 0x5de565
shl byte [esp + 0x13], 1
add esi, 1
cmp esi, dword [esp + 0x30]
mov dword [esp + 0x40], esi
jl 0x5de500
mov edx, dword [esp + 0x3c]
add dword [esp + 0x1c], edx
add ebx, dword [esp + 0x20]
sub dword [esp + 0x5c], 1
jne 0x5de4f0
mov eax, dword [esp + 0x80]
movsx edx, word [eax + 0xe]
movsx eax, word [eax + 0xc]
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x68]
mov esi, dword [esp + 0x44]
add edx, edi
add edx, ecx
push edx
add eax, esi
add eax, ecx
push eax
push edi
push esi
lea ecx, [esp + 0xcc]
push ecx
call dword [sym.imp.USER32.dll_SetRect]
mov ebx, dword [esp + 0x2c]
mov edx, dword [ebx + 0x89f84]
push 0
push edx
push edi
push esi
lea eax, [esp + 0xcc]
push eax
push 0
lea ebp, [ebx + 0x89f90]
push ebp
push 0
push 0
push 0
push 0
push ebp
call fcn.0057ed58
mov ecx, dword [ebx + 0x89f84]
mov eax, dword [esp + 0x54]
mov edx, dword [ebx + 0x89f78]
add dword [esp + 0xec], eax
add dword [esp + 0xf4], eax
push 0
push ecx
push edi
add edx, esi
push edx
lea eax, [esp + 0xfc]
push eax
push 0
push ebp
push 0
push 0
push 0
push 0
push ebp
call fcn.0057ed58
add esp, 0x60
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x3c]
push eax
call fcn.0057cf76
mov edi, dword [esp + 0x84]
add esp, 4
mov eax, dword [esp + 0x68]
add word [edi + 6], ax
add word [edi + 0xc], ax
add word [edi + 0xe], ax
mov eax, dword [esp + 0xb8]
mov dword [eax], 1
mov dword [eax + 4], edi
mov dword [edi + 0x10], eax
mov byte [edi], 1
add dword [ebx + 0x89e3c], 1
mov eax, dword [ebx + 0x89e3c]
cmp eax, dword [ebx + 0x89e40]
jne 0x5de6ec
mov dword [ebx + 0x89e3c], 0
mov eax, dword [esp + 0x8c]
add dword [esp + 0x78], 3
add eax, 1
cmp eax, dword [esp + 0x118]
mov dword [esp + 0x8c], eax
jl 0x5dd2b0
mov ebp, dword [esp + 0xa0]
mov esi, dword [esp + 0x84]
jmp 0x5de730
push 0x881fe0
jmp 0x5dd241
mov edi, dword [esp + 0x80]
push ebp
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
push esi
call dword [sym.imp.GDI32.dll_DeleteDC]
pop ebp
pop ebx
mov eax, edi
pop edi
pop esi
add esp, 0x104
ret
pop edi
xor eax, eax
pop esi
add esp, 0x104
ret